web-dev-qa-db-ja.com

ffmpegを使用したGPU加速ビデオ処理

Ffmpegを使用して、NVIDIA GPUでビデオのエンコードとデコードを高速化したい。

NVIDIAのWebサイト から:

NVIDIA GPUには、1つ以上のハードウェアベースのデコーダーとエンコーダー(CUDAコアとは別)が含まれており、いくつかの一般的なコーデックに完全に高速化されたハードウェアベースのビデオデコードとエンコードを提供します。デコード/エンコードのオフロードにより、グラフィックエンジンとCPUは他の操作に使用できません。

私の質問は、CUDAコアを使用してビデオをエンコードおよびデコードできますか?

15
Wang Hai

FFmpegは、NVIDIAを含むハードウェアアクセラレーションのサブシステムを提供します。 https://trac.ffmpeg.org/wiki/HWAccelIntro

NVIDIA GPUでGPUアシストエンコーディングのサポートを有効にするには、次のものが必要です。

  • サポートされているGP
  • オペレーティングシステムでサポートされているドライバー
  • NVIDIA Codec SDK
  • --enable-nvencで構成されたffmpeg(構成中にドライバーが検出された場合のデフォルト)
10
Mike Versteeg

マイクが言ったように、ffmpegはこれらのハードウェアアクセラレーションの一部をラップします。最初に、より低レベルのアプローチ(公式NVIDIAライブラリ)に進む代わりに、それを使用する必要があります!

table は、NVENCがおそらくあなたの候補であることを示しています。

しかし:気をつけてベンチマークを行ってください。 GPUエンコーダーは非常に高速である必要がありますが、CPUエンコーダーよりも劣っています。

ここで確認することは、GPUエンコーダーが特定のビットレートである程度の品質を目標としている場合、CPUエンコーダーと競合するかどうかです。私はノーノーノーと言います(非常に高いビットレートまたは非常に悪い品質を除く)が、それはあなたのユースケースに依存するものです。 GPUエンコードは、利点のみを提供する特効薬ではありません。

5
sascha