一、背景
使用手机录制了1080 * 1920的视频,体积大小是345 MB, 时长为3分50s。
直接copy到 mac 上使用ffmpeg (重新编码) 切除最后5 s ,得到一个3分 45秒的视频,但是体积大小为78 MB(分辨率不变)。且肉眼看来,画质没有损失。
ffmpeg 切割视频的命令如下 :
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -y output.mp4
二、问题
为什么只是去掉5 s 的时长,体积变小这么多
三、原因
简单说 :手机硬件编码的效果太差 + ffmpeg 进行了重新编码
- 手机执行的是硬件编码,优点是计算资源友好,不需要很高的CPU计算负载。缺点是编码的效果很差—-简单的体现就是视频的体积比较大(具体的软编码和硬编码可以自己查询)
- 因为我在使用ffmpeg 视频切割的时候进行的重新编码(为了声音和画面完美对齐),所以ffmpeg 自行使用了自己最好的软件编码算法,进而得到了很好的压缩体积。确定就是在编码的时候,我的M1 pro 的CPU负载达到了90% ,可以看到这个cpu压力对于移动端是完全不可接受的。