1
在无损模式下使用h264会带来小的意外结果
我对ffmpeg屏幕捕获功能感到好奇,然后开始在h264中进行简单的实时捕获测试。 ffmpeg -f dshow -i video="screen-capture-recorder" -video_size 1920x1080 -framerate 30 -c:v libx264 -crf 0 -preset ultrafast capture.mkv 根据ffmpeg h264上所说的内容,使用-qp 0或-crf 0选项libx264应该可以在无损模式下工作。 您可以使用-qp 0或-crf 0编码无损输出。建议使用-qp而不是-crf进行无损,因为8位和10位x264使用不同的-crf值进行无损。 在谈论使用较慢的预设尝试尝试保存一些大小的可选重新编码时,实时捕获部分的帮助中也会重复此操作: 注意,由于初始记录是无损的,并且重新编码也是无损的,因此在此过程中不会以任何方式引入质量损失。 基于此,我相信该指南,并假设使用-qp 0可以实现完全无损的工作流程;) 但是我发现它在特定情况下会带来一些损失。 因此,我使用此代码对huffyuv编解码器进行了另一个测试: ffmpeg -f dshow -i video="screen-capture-recorder" -video_size 1920x1080 -framerate 30 -c:v huffyuv capture.mkv 结果: 屏幕1:无损模式下的h264 屏幕2:huffyuv 基于屏幕huffyuv是完美的,一个真正的无损编解码器却h264在这里压缩了一些内容,我无法理解为什么应将其设置为无损模式。 (huffyuv等同于桌面的位图屏幕截图,使用h264可以实现相同的效果) 有人可以帮我弄清楚吗? 编辑:根据需要添加一些ffmpeg转储;) h264运行: …