web-dev-qa-db-ja.com

FFmpeg:h264_qsvエンコーダーとcrfの問題

H.264(Intel Quick Sync)コーデックを使用してBandicamでゲームプレイを記録しているときに、FFmpegについて知りました。残念ながら、私のビデオの1つがAVIラッパーに記録されてしまい、それをある程度ロスレスな方法でMP4にトランスコードしたかったのです

ラッパーを変更したい理由は、Adobe 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をサポートしている可能性があります。

この周りに何かありますか? FFmpegver。 20170921-183fd30、64ビット、静的。

編集:回避策rnは、libx264に戻って、fasterveryfast、またはsuperfastを実行することですが、IntelQuickを使用してかなりの時間を節約したいと思います。同期します。

3
KennyG1092

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_ahead1である必要があります。 global_qualityの値は1〜51です。値が小さいほど品質が高くなります。 〜25は、x264 CRF23と同等である必要があります。

5
Gyan