ffmpeg参数将近似缩放记录的质量

问题描述

我一直在Mac上使用Quicktime录制屏幕共享演示文稿,它使用的x264格式约为60fps。产生的视频文件的类型为MOV,演示时间为1小时,约为2.2GB。我想用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'

我将视频重新缩放为1600px宽度以节省空间,并且还将记录转换为24fps,因为我认为不需要完整的〜60fps。当我在屏幕上聊天时,大部分都是静态图像。使用-profile:v high参数将产生大约100MB的文件。否则大约为160MB。

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

但是,如果我增加-crf 32参数,则会开始降低质量。我不确定缩放如何以高分辨率(例如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,但这导致文本质量较差。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...