FFmpeg:h264_qsv 编码器和 crf 问题

FFmpeg:h264_qsv 编码器和 crf 问题

我在使用 H.264(英特尔快速同步)编解码器在 Bandicam 上录制游戏时发现了 FFmpeg。不幸的是,我的一个视频最终被录制在 AVI 包装器中,我想以某种无损的方式将其转码为 MP4

我之所以想要更换包装器是因为 Adob​​e Premiere Pro CC 2017 在某种程度上不能很好地处理 AVI,当我使用 H.264 和 MP4 作为包装器导出时,整个视频看起来都坏了。

因此,我抓住 FFmpeg 并尝试使用以下命令对我的视频进行转码:

ffmpeg -i vid.avi -c:v h264_qsv -crf 10 -r 50 -c:a aac -b:a 192k -ac 2 vid.mp4

以黄色显示的错误消息是:

Codec AVOption crf (Select the quality for constant quality mode) specified for output file #0 (vid.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.

我非常确信 H.264(Intel Quick Sync)具有 CRF 支持,否则我可能错了,混淆了 H.264(QSV)和 libx264,后者显然支持 CRF。

有什么办法吗?我有 FFmpeg 版本 20170921-183fd30,64 位,静态。

编辑:现在的解决方法是返回到 libx264 并运行fasterveryfast或者superfast,但我仍然想通过使用英特尔快速同步来节省相当多的时间。

答案1

QSV 编码器没有 CRF 参数。等效的速率控制方法是 LA_ICQ。

https://software.intel.com/en-us/articles/common-bitrate-control-methods-in-intel-media-sdk

x264(FFmpeg 的默认 h264 实现)的默认速率控制是 CRF。这允许比特率波动以保持目标质量水平。Media SDK 的 ICQ 和 LA_ICQ 是此类算法的最佳匹配。


要调用它,需要以下形式的命令:

ffmpeg -i in.mp4 -c:v h264_qsv -global_quality 10 -look_ahead 1 out.mp4

look_ahead应该是1global_quality可以从 1 到 51。值越低表示质量越好。~25 应该相当于 x264 CRF 23。

相关内容