哪些 ffmpeg 参数将近似 Zoom 录制质量

What ffmpeg arguments will approximate Zoom recording quality

我一直在 Mac 上使用 Quicktime 录制屏幕共享演示文稿,它使用约 60fps 的 x264 格式。制作的视频文件为 MOV 类型,大约 2.2GB 用于 1 小时的演示。我想使用 ffmpeg 压缩它,我也一直在使用 x264 压缩它。这是我的论点:

ffmpeg -i '$inputFile' -vcodec "libx264" -crf 32 -vf 'scale=${width}:-2,fps=24' -c:a aac -b:a 128k -preset veryslow -profile:v high -tune stillimage -f mp4 '$outputFile'

我将我的视频调整为 1600 像素宽度以节省 space 并且我还将录制转换为 24fps,因为我认为不需要完整的 ~60fps 可用。当我在屏幕上说话时,它主要是静态图像。使用 -profile:v high 参数会产生大约 100MB 的文件。否则大约为 160MB。

另一方面,更大分辨率(4k 等)的变焦记录大约是每 1 小时 80MB。有谁知道我们可以使用哪些选项来估算此文件的大小和质量?我知道他们使用的是较低质量的音频,这可能解释了一些差异。

但如果我增加 -crf 32 参数,它就会开始严重降低质量。我不确定 Zoom 如何以 1080p 和 4k 等高分辨率实现视频质量,文件大小约为 80MB,而我无法使用 1600px 宽度来匹配它。

编辑:我有一个想法,在静态内容的屏幕共享中我可能不需要所有 24 fps。所以我将它降低到 5 fps,这似乎很适合我的用例。我想知道这是否是 Zoom 的作用?

看来我找到了如何使用 ffmpeg 进行可变帧率编码并保持音频和视频同步的方法。

我使用参数 -vf mpdecimate -vsync vfr 来删除重复的帧。在屏幕录制中,我们有很多重复的帧,因此删除它们会导致文件大小小得多。我还使用 -cfr 36,因为我发现它仍然可以产生良好的结果,因为现在我以原始分辨率进行编码。

这提供了非常好的原始分辨率编码,文件大小比 Zoom 稍大,但结果具有更好的音频和视频质量。我很满意。

我创建了一个自动转换的工具:https://github.com/stanimirivanovde/general-tools/tree/master/ffmpeg-encoding

我也尝试过使用 x265 进行试验,但我没有发现它更优越。编码速度比 x264 慢很多,这真的不行。我试图将 cfr 增加到 40,但这导致文本质量不佳。