FFmpeg:h264_qsv 编码器和 crf 问题

Ken*_*092 4 video codec mencoder ffmpeg video-encoding

我刚刚在使用 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
Run Code Online (Sandbox Code Playgroud)

出现黄色的错误是:

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(英特尔快速同步)支持 CRF,否则我可能会大错特错,将 H.264(QSV)和 libx264 混为一谈,后者显然支持 CRF。

这附近有什么吗?我有 FFmpeg 版本。20170921-183fd30,64 位,静态。

编辑:解决方法 rn 是返回到 libx264 并运行faster,veryfastsuperfast,但我仍然希望通过使用英特尔快速同步来节省相当多的时间。

Gya*_*yan 8

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
Run Code Online (Sandbox Code Playgroud)

look_ahead应该是1global_quality可以是 1 到 51。较低的值代表更好的质量。~25 应该相当于 x264 CRF 23。