大家知道我有好几个 Youtube 频道,目前主频道是Tinyfool的胡说八道。
我现在有几种视频拍摄方式,其中一种主要的是用 Mac 的 QuickTime player 来录制,录制高品质的版本生成的 .mov 文件,文件非常大。
我最近录制的一个视频有48分钟,1080p的,文件尺寸足有51G。直接上传到 Youtube 也可以,但是实际上 Youtube 也会把你上传的视频进行压缩,所以,事先先压缩可以节约大量的翻墙流量。
于是我研究了一下 FFMpeg 的命令,用下面的命令来做压缩:
ffmpeg -i input.mov -vcodec h264 -acodec mp2 -vf scale=-1:1080 output.mp4
-vcodec h264
是因为 Youtube 内置的视频格式是 .h264-acodec mp2
是因为 Youtube 内置的音频格式是 mp2- 原视频是 1080p 的,用
-vf scale=-1:1080
是为了保护分辨率不被篡改。这些参数的结果是上传到 FFMpeg 以后不会有更近一步的压缩,节省了上传后的处理时间。
用了一些日子,效果非常不错。
但是这个转换速度很慢,耗时很长,我今天又研究了一下。在压缩的时候,CPU 可以跑满,这说明这完全是一个软压缩。于是我寻找了一下, FFMpeg 如何在Mac下加速,原来加入 -c:v h264_videotoolbox
就可以了。于是命令变为:
ffmpeg -i input.mov -vcodec h264 -acodec mp2 -vf scale=-1:1080 -c:v h264_videotoolbox output.mp4
在我的 Mac M1Max 笔记本上用新命令之前压缩 48 分钟的 51 G Mov文件需要 22分15秒,用了新命令,只需要12分钟1秒,省了大概一半的时间。
但是我发现用新命令的结果非常模糊,用 FFMpeg 检查文件发现,原来的 bitrate 是 2868 kb/s,新命令的结果 bitrate 是 716 kb/s。默认的压缩率太高了,所以看起来很模糊,于是我加入了一个新的参数,-b:v 2800k 限制 bitrate,然后压缩的结果就看起来没有任何问题了。而压缩速度几乎没变。所以,最后的命令如下:
ffmpeg -i input.mov -vcodec h264 -acodec mp2 -vf scale=-1:1080 -c:v h264_videotoolbox -b:v 2800k output.mp4