GPUを使用してh264をエンコードできますか?


13

ハンドブレーキを使用して、マシンでh264エンコーディングを高速化できるより良いグラフィックスカードを入手できるかどうか疑問に思っています。

もしそうなら、どのグラフィックスカードがこれをサポートするかをどのように見分けることができますか?

GPUがh264のハードウェアデコードを実行できることは承知していますが、エンコードについてはわかりません。


関連:ビデオ圧縮の高速化 –いずれにせよ、このためのNVIDIAカードが必要であり、喜んでお金を費やします。
slhck


以下のためにH.264符号化、ハンドブレーキは、ソフトウェア・エンコーダ使用x264の(VideoLANのを)。以下のいくつかの回答は、ハンドブレーキがffmpegを使用していることを示しています。ffmpegは、x264またはhw(GPU)実装を使用できます。この古い(しかしまだ関連)質問は、おそらくされているがない「速くエンコードH.264作る方法」のではなく、「より高速ハンドブレーキを作成する方法」を尋ねます。回答には有効期限があります(一部はすでに期限切れです)。処理MLおよび/またはバッチを実行する場合は、今のところ、あなたはあなたのハードウェアに実装と一致する必要があります
マイケル・

fwiw、ffmegからのこのコメントは興味深いものです。「ハードウェアエンコーダーは通常、x264のような優れたソフトウェアエンコーダーよりも大幅に低品質の出力を生成しますが、一般に高速でCPUリソースをあまり使用しません。同じ知覚品質の出力、または同じビットレートで低い知覚品質の出力を作成します。)」
マイケル

回答:


7

ハンドブレーキを使用すると、答えはノーになります。HandbrakeはCPUのみのh.264エンコーダーですが、 ビデオスケーリングにOpenCLを使用でき、ビデオデコードにDXVAをある程度サポートしています。

slhckによってリンクされた質問はMediaCoderに言及していますが、Nvidiaグラフィックカードまたは第2世代のグラフィックコアを備えたIntel CPUが必要です。

廃止された古い製品、特にBadaboomとATi Avivoソフトウェアがいくつかあります。

NabodiaとIntelグラフィックプロセッサを使用してエンコードプロセスを高速化することができたBadaboomが、サポート終了となり、新しいグラフィックカードをサポートしなくなりました。

ATiには独自のビデオエンコーダーがあり、以前は「Avivo」と呼ばれていましたが、AMD Video Converterが含まれていたAMD Codec Packageにマージされてから使用できなくなりました。


だから私は現時点でAMD CPUを使用していますが、これは私にとって時間の無駄だということですか?NVIDIAカードにできますか?CUDAをサポートする必要がありますか?
ピーター

このリンク、en.wikipedia.org / wiki / CUDA を見つけました。これは、非常に多くのNVIDIAカードがCUDAをサポートしていることを示唆しています。
ピーター

GPUを使用してビデオをエンコードするのに役立つ可能性のあるAMDソフトウェアパッケージへのリンクで回答を更新しましたが、HD2000シリーズカード以上が必要です。特に強力なCPUを搭載しているが、予算のグラフィックカードを使用している場合、Handbrakeはさらに高速です。
モクバイ

Badaboomは、2012年4月18日をもってサポートを終了します。
HVS

2
上記の答えは、正しくない/もはや正しくありません。
-totaam

4

x264はOpenCLエンコーディングアクセラレーションをサポートするようになりました。どれくらいの加速が得られるかは、グラフィックカードのパフォーマンスに依存します。私のGTS 450では何も得られず、遅いカードではエンコードが実際に遅くなります。より良いカードが役立つ場合があります。必要なのは、x264コマンドラインに--openclを追加することだけです。ハンドブレーキは同じx264ライブラリを使用し、新しいビルドでも同じOpenCLアクセラレーションを提供すると考えています


OpenCLエンコーディングアクセラレーションを使用するにはどうすればよいですか?
Dr.jacky

2

https://trac.ffmpeg.org/wiki/HWAccelIntro

FFmpegは、ハードウェアアクセラレーションのサブシステムを提供します。

ハードウェアアクセラレーションにより、特定のデバイス(通常はグラフィカルカードまたはその他の特定のデバイス)を使用してマルチメディア処理を実行できます。これにより、専用のハードウェアを使用して要求の厳しい計算を実行しながら、そのような計算からCPUを解放できます。通常、ハードウェアアクセラレーションにより、特定のハードウェアデバイス(通常はGPU)が、ビデオストリームのデコードとエンコード、またはビデオのフィルタリングに関連する操作を実行できます。

FFmpegツール-hwaccelを使用すると、特定のデコーダーを有効にするオプションを使用して、HWアシストデコードが有効になります。各デコーダーには特定の制限があります(たとえば、H.264デコーダーはベースラインプロファイルのみをサポートします)。HWアシストエンコーディングは、特定のエンコーダー(nvenc_h264など)を使用することで有効になります。HWアシスト処理のフィルタリングは、いくつかのフィルターでのみサポートされています。その場合、フィルターオプションを使用してOpenCLコードを有効にします。

いくつかのハードウェアアクセラレーション標準APIがあり、その一部はFFmpegによってある程度サポートされています。

「-hwaccel auto」オプションを使用すると、エンコードセッションに使用するハードウェアベースの高速デコードを選択できます。入力前にこのパラメーターを「auto」で追加できます(x264がOpenCLサポートでコンパイルされている場合は、-x264optsパラメーターを追加できます)。例:

ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output

申し訳ありませんが、「-hwaccel」で使用可能なすべてのオプションをリストする方法を思い出せません。

また、これを試すことができます:https : //wiki.archlinux.org/index.php/Hardware_video_acceleration


役に立つように見えますが、これは特に質問に答えているようには見えません。ffmpegとその引数がOPにどのように役立つかを示す詳細を追加してください。
music2myear

この答えは、h.264エンコードにハンドブレーキの代わりにffmpegを使用することを意味します。おそらく、問題はエンコードの最速の方法を求めているだけであり、GPUがこれを可能にすると仮定するためです。すべてのGPUが同等に強力なわけではないことに注意してください(たとえば、統合GPUと専用GPU)。また、CPUには、ライブラリをサポートするためにコンパイルされた場合にライブラリが利用できる最適化があります。したがって、「ハードウェアアクセラレーション」は、CPU経由であろうとGPU経由であろうと、下降する正しい道です。
マイケル

0

現在、Handbrakeは、H.264 / AVC用の次のハードウェアアクセラレータエンコーダをサポートしています。

  1. Intel QuickSync(WindowsおよびLinux)。これは、少なくともIntelベースのSandybridge(第2世代コア)と互換性があります-統合グラフィックスが有効で、オペレーティングシステムに公開されているシリーズプロセッサライン。許容可能なエンコーディング品質のための推奨ハードウェア:Haswell(第4世代Coreシリーズ)以降、きめ細かいターゲットレベル(TU)、先読み機能(LA-BRCおよびICQエンコーディングモードなど)の概念を導入し、パフォーマンスが大幅に向上しました。こちらからハンドブレーキのドキュメントの使用ガイドをご覧ください。

  2. NVIDIAのNVENC:これには、高性能のコンシューマSKU(GTXシリーズ)およびプロフェッショナルラインアップ(KeplerベースのQuadroおよびTesla GPU)から少なくともNVIDIAのKepler(GK +)シリーズGPU 以上が必要です。これは、WindowsとLinuxの両方で利用可能です。

注目すべきは、NVENCを使用すると、消費者SKUでの同時エンコードセッションがせいぜい2つに制限されることですが、プロのラインナップはこの影響を受けません。特定のエンコーダー機能のリファレンスについては、GPUマトリックスを参照してください。最高のエンコーダのパフォーマンスと品質を得るには、Pascal GPU とVolta GPUの最新バージョンを使用してください。

オプションで:

  1. AMD AMFのエンコーディングサポートは、Windows専用の現在のナイトリービルドでも利用できます。AMDのAMFに関する特記事項(すべてのGCN + SKUのハードウェアに組み込まれているVCEエンコーダーを活用)は、Polaris(RX 400+シリーズ)やVegaなど、H.264 / AVCの高度なエンコーダーチューニングなどの新しいハードウェアHEVCエンコーディングのサポートが導入されたため、廃止されました。AMDが落としたのは、前述のハードウェアベースのエンコーダー(QuickSyncおよびNVENC)が回帰なしで世代に実装した機能である、適応量子化(AQ)をサポートしないBフレームエンコーディングです。また、参照してこれを期待することにスループットの測定基準に関する注記に。

Appleのサポートに関する限り、これはせいぜい暫定的なものです。VideoToolBoxのハンドブレーキの範囲を超えて実装APIも、コントロールの非常に限られたセットを持っているようです。Handbrakeがアップストリームを採用したとしても、品質保持とスループットの点で奇跡を期待しないでください。

現在のように、プラットフォームで最新のエンコーダー機能を使用するには、最新のナイトリービルドを使用する必要がある場合があることに注意してください。これは将来的に間違いなく変わるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.