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

时间:2016-09-02 12:02:46

标签: video ffmpeg h.264 video-capture libx264

1.我们需要以2-3 fps的速度将屏幕截图记录到视频中。质量 - 使屏幕上的文字可读的最小可能性,256色。尽可能减少输出视频文件的大小非常重要。

2.我们做了很多测试,目前最合适的方法是每隔300-500毫秒制作一次屏幕截图,将它们保存在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.这是使用2-3fps截屏播放获得最小输出尺寸的最佳方法吗?

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

-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"

那么,我们怎样才能在每帧之后添加一些延迟而不增加输出文件大小???

1 个答案:

答案 0 :(得分:1)

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

直接捕获:

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,这将更好地压缩。