使用 ffmpeg 进行屏幕录制和视频编码

screen recording and video encoding with ffmpeg

1.we 需要以 2-3 fps 的速度将屏幕截图录制成视频。质量 - 使屏幕上的文本可读的最低限度,256 色。尽可能减小输出视频文件的大小很重要。

2.we做了很多测试,目前最合适的方式是每隔300-500msec截屏,保存成PNG格式,然后运行ffmpeg编码成H. 267 这些参数:

ffmpeg -f image2 -i "C:\png5min\image%04d.png" -y -an -vcodec libx264 -preset veryfast -crf 30 "C:\output.mp4"

3.is 这是使用 2-3fps 截屏视频获得最小输出尺寸的最佳方式吗?

4.the 输出文件播放速度非常快,默认编解码器关注图像表示 25fps。但它们实际上是 2fps。 好的,但是如果我们尝试降低输出帧速率,输出文件大小会增加大约两倍!! (3m:26s 视频从 3mb 到 6mb)。如果我们将输出帧速率设置为 2 - 视频根本不播放帧或仅播放 2 帧 3 分钟...:[=​​12=]

-r 2 -f image2 -i "C:\png5min\image%04d.png" -y -an -vcodec libx264 -preset veryfast -crf 30 -r 2 "C:\image5min_2fps_crf30_test__R2-2.mp4"

那么,我们如何才能在不增加输出文件大小的情况下在每帧之后添加一些延迟???

尝试使用较低的输入速率和较高的输出速率。

直接捕获:

ffmpeg -f dshow -framerate 2 -i video="screen-capture-recorder" -c:v libx264 -r 12 -crf 30 -preset fast c:\output3.mkv

图像转换:

-framerate 2 -i "C:\png5min\image%04d.png" -y -c:v libx264 -preset medium -crf 30 -r 6 -x264opts ref=5:min-keyint=300:keyint=600:rc-lookahead=150 "C:\image5min_2fps_crf30_test__R2-2.mp4"

ultrafast 预设主要用于全帧率实时捕获。对于 2 的输入速率,您可以降级,这将为您提供更好的压缩。在图像转换命令中,你可以完全跳过它,所以它会默认为medium,这样压缩效果会更好。