使用RecordRTC官网的Demo,录制同样为30s的视频,相同的运动画面,采用不同编码方式,每个视频录制两遍,对比视频体积。
使用RecordRTC录制视频时支持的格式:
vp8,vp9,mkv,h26四,使用whammy编码
通过mimeType参数设定,具体参数对应格式可以参考RecordRTC官网
经whammy编码器输出的视频文件无法在edge中使用<video>标签播放,也无法通过videojs播放 ,无法在potplayer之中打开,甚至无法通过hankbrake识别,原因可能是代码过于老旧,应避免使用。
对比结果:
default 3.03m 3.23m
h26四 3.05m 3.11m
mkv 3.10m 3.13m
vp八 9.25m 9.46m
vp9 7.53m 7.03m
whammy 5.04m 8.13m
在potplayer之中打开之后发现h26四/mkv/default显示的都是h26四格式,区别可能就是封装格式不同,default为webm扩展名,h26四为mp4,mkv为mkv。
vp8和vp9的扩展名都是mp4,potplayer之中打开则分别显示编码方案为vp8和vp9。
进行对比时使用的软件或库的版本号:
edge 版本 115.0.1901.203 (正式版本) (六十4 位)
Video.js 8.5.2 videojs/video.js GitHub
RecordRTC 5.6.2 muaz-khan/RecordRTC GitHub
potplayer 230707(1.7.21953)
有些浏览器支持mimeType = “video/mpeg”,但是edge不支持。mimeType = “video/webm”时,文档里写的是默认使用vp8编码,测试之后发现使用的是h26四编码.
vp8和vp9在potplayer播放时有控制条,但时间显示有问题,其他视频在potplayer之中播放没有控制条。
输出的所有视频,win10自带媒体播放器都无法播放,且无法显示缩略图.
使用ffmpeg转码成mpeg-4看下面的代码,演示了怎样通过摄像头录像并保存为mpeg编码的mp4.
这样转码之后的mp4,可以在媒体播放器中播放并有缩略图,但是浏览器不支持(无法通过edge和videojs播放)
该项目使用ffmpeg-asm.js转码,但这个文件很大,有18m,需要先下载下来再解码,而且下载链接还失效了.
可以将该项目下载到本地,然后开启一个本地server,类似http://localhost:5173/ 这样,将ffmpeg-asm.js放在服务根目录,再修改workerPath为http://localhost:5173/ffmpeg_asm.js
这样就可以正常使用了,而且下载ffmpeg-asm.js的速度更快,不过这样操作之后merging-wav-and-webm-into-mp4.html这个demo依然不可用.
而且这样转码,时间比较长,转码之后的mp4也比h26si体积更大.仅供参考