web-dev-qa-db-ja.com

AMD RadeonでFFmpegのGPUアクセラレーションを使用する方法?

私はRadeon Vega 64を持っていて、公式ウェブサイトからAMDGPUをインストールしましたが、ここからどこに行くべきか分かりません。

ハードウェアアクセラレーションを使用して、FFmpegでビデオを変換したいと思います。対応するFFmpegコマンドとは何ですか?デバイス/ドライバーをFFmpegにするにはどうすればよいですか?

4
Googlebot

使用しているプラ​​ットフォームを示していないため、WindowsとLinuxの両方の手順を説明します。ケースに該当する次の手順を使用してください。

Windowsを使用している場合は、AMFを介して関連するエンコーダにアクセスできます。適切な名前はh264_amfおよびhevc_amf、その使用法は以下を介して表示できます。

ffmpeg -h encoder=h264_amf

ffmpeg -h encoder=hevc_amf

Windows用のFFmpegバイナリを、ネイティブで、または推奨されているとおりにクロスコンパイルしてビルドする必要があります。 これ プロジェクトはそのテーマの素晴らしいスタートです。

クロスコンパイルオプションを使用する場合は、必要な機能を備えたビルドの以下の引数を渡します。

./cross_compile_ffmpeg.sh --gcc-cpu-count=12  --build-libmxf=n --disable-nonfree=n --prefer-stable=y --compiler-flavors=multi

上記の結果のビルドはnon-redistributableであり、個人的な使用のみを目的としています。

Linuxでは、オープンソースのmesa amdgpuドライバー(AMDからインストールされた独自のパッケージではない)を使用して、適切にh264_vaapiおよびhevc_vaapiという名前のVAAPIベースのエンコーダーにアクセスできます。

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=hevc_vaapi

私の知る限りでは(間違っている場合は訂正してください)、VP8およびVP9エンコーディングは、VAAPIを介してAMD側で公開されていません。これを確認するには、次のコマンドを実行します。

vainfo | grep Slice

システムで、サポートされているエンコーダーを確認します。 Ubuntuのようなものでは、VAAPIを有効にしたFFmpegがデフォルトである可能性が高いです。ただし、必要に応じて、ソースからコピーを作成することもできます。 FFmpeg Wikiのコンパイルガイド を参照し、必要に応じて調整してください。 this などのヘルパーも便利です。

AMD AMFベースのエンコーダーは、Vulkanベースの相互運用機能を使用して、最終的にLinuxに搭載される可能性があります。これを 進行中の作業 と見なします。

4
林正浩