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"
那么,我们怎样才能在每帧之后添加一些延迟而不增加输出文件大小???
答案 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
,这将更好地压缩。