FFmpegハードウェアデコード-HWAccelIntro



Ffmpeg Hardware Decoding Hwaccelintro



オリジナル(英語): https://trac.ffmpeg.org/wiki/Hardware/QuickSync
警告:特にLinuxでは、確信が持てない場合はIntel MediaSDKをインストールしないでください。多くの場合、あなたはそれを必要とせず、それを使おうとすると他のものを壊す可能性があります。

「IntelQuickSync Video」は、多くのIntelGPUで利用可能な一連のハードウェア機能のマーケティング名です。



1.ハードウェアサポート

画像

2.APIサポート

ハードウェアには、さまざまなAPIを介してアクセスできます。



  • DXVA2 / D3D11VA
    これらは、ビデオデコードをサポートするためにIntelグラフィックスドライバーによって実装された標準のWindowsAPIです。

  • Linux上のlibmfx
    これは、Intel Media SDKの一部としてインストールできるIntelのライブラリであり、エンコードおよびデコードのケースのサブセットをサポートします。

  • Windows上のlibmfx
    これは、すべてのエンコードおよびデコードのケースをサポートするIntelグラフィックスドライバーで提供されるライブラリです。



  • Media Foundation
    Intelグラフィックスドライバーを使用したいくつかのコーディングおよびデコードのケースをサポートする別のWindowsAPI。 Ffmpegはサポートしていません。

  • i965ドライバーを備えたVAAPI
    これは、libva / VAAPI構造体の主要な無料ドライバーです。ほとんどのLinuxディストリビューションはそれをパッケージ化しています。

  • iHDドライバーを使用したVAAPI
    Linuxのlibmfxバックエンドは、変更されたlibvaおよびVAAPIドライバーを使用します。これは、ユーザーが直接使用することもできます。

3.Linux

Media Server Studioは、https://software.intel.com/en-us/intel-media-server-studio/のバイナリからインストールできます。ただし、Media Server Studioは、限られた数のHWプラットフォームとLinuxディストリビューションのみをサポートします。オープンソースメディアスタック全体が、幅広いハードウェアプラットフォームとサポートされているLinuxディストリビューションを提供します。

Intelオープンソースメディアスタック
プロジェクト名:サポートされているGen Graphics オープンソースリポジトリ
MSDK:gen9 + https://github.com/Intel-Media-SDK/MediaSDK
Libva:GEN5 + https://github.com/intel/libva
I965ドライバー:gen5〜gen9.5 https://github.com/intel/intel-vaapi-driver
iHDドライバー:gen9 + https://github.com/intel/media-driver
VAAPI VS libmfx

可能であれば、i965ドライバーでVAAPIを使用することを強くお勧めします。ユースケースで特定の機能セットが特に必要な場合は、libmfxのみが使用されます。

  • VAAPI / i965
    ほとんどのLinuxディストリビューションに標準でパッケージ化されています。
    古くて安価なデバイスを含む、利用可能なすべてのハードウェアを実行します。
    幅広いコーデックサポート。
    は、AMD / NvidiaハードウェアおよびMesaも使用する可能性のあるアプリケーション用の汎用APIです。
    標準API(EGL / OpenGL、Op enCL)と相互運用します。
  • libmfx / iHD
    場合によっては、エンコード品質(?)が向上する可能性があります。
    場合によっては(特にアイリスグラフィックスで)、より高いエンコーディングスループットを提供することがあります。
    Windowsでも実行されるアプリケーション用の汎用API。
    IntelOpenCL実装と相互運用可能です。

4.Windows

Windows版MSDKはから取得できます https://software.intel.com/media-sdk

5.実行

VAAPI

ハードウェア/ VAAPIを参照してください。 https://trac.ffmpeg.org/wiki/Hardware/VAAPI

libmfx

ライブラリにはいくつかのオプションがあり、有効な値はバージョンとハードウェアによって異なります。 Libavcodecは、一般的なオプションをlibmfxオプションに賢くマッピングしようとしますが、マッピングは粗雑で欠陥があり、特にレート制御に関しては欠陥があります。

無効な組み合わせを使用すると、次のメッセージが表示される場合があります。 '選択したレート制御モードは、QSVランタイムでサポートされていません。別のモードを選択してください。」通常、このメッセージは正確ですが、使用可能なデバイスがないなど、他の問題を示している場合もあります。

6.LinuxにMediaSDKをインストールします

カーネルパッチと変更されたシステムライブラリの両方が必要であることに注意してください。通常の配布メカニズムを使用せず、他のソフトウェアパッケージによって誤って破壊/破壊される可能性があるため、他の目的にも使用されるマシンにインストールすることはお勧めしません。

  • 建設機械:
    パッケージスケジュールを作成してインストールします。< https://github.com/lu-zero/mfx_dispatch >。 (インストールマニュアルの説明に従って、Media SDKインストールから必要なファイルを抽出することもできます。これはお勧めしません。パッケージを使用するだけです。)
    –enable-libmfxを使用してffmpegをビルドします。

  • ターゲットマシン:
    ターゲットコンピュータにサポートされているCPUがあることを確認してください。現在のバージョンは、高価なCPU( 'Xeon' / 'Core i'ブランド)でgen8 / gen9グラフィックスのみをサポートします。安価なCPU(「Pentium」/「Celeron」/「Atom」ブランド)の同じグラフィックコアは、おそらく商業上の理由で明示的に無効になっています。
    クリーンバージョン(現在4.4 :)でサポートされているカーネルバージョンを入手してください。< https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz >)提供されたパッチを適用します。ビルドしてインストールします。
    提供されているlibvaツリーとlibdrmツリーをビルドしてインストールします。
    Media SDKインストールスクリプトを実行して、独自のコンポーネントをインストールします。
    再起動。