「ハードウェアビデオアクセラレーション」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(序文の変更)
(カテゴリを修正)
 
(2人の利用者による、間の38版が非表示)
1行目: 1行目:
[[Category:グラフィック]]
+
[[Category:グラフィック]]
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
 
[[en:Hardware video acceleration]]
 
[[en:Hardware video acceleration]]
[[ru:VA-API]]
+
[[ru:Hardware video acceleration]]
 
[[zh-hans:Hardware video acceleration]]
 
[[zh-hans:Hardware video acceleration]]
[[wikipedia:ja:Graphics Processing Unit|ハードウェアビデオアクセラレーション]]により、ビデオカードで動画をデコードエンコードするを活用することで、CPU の負担を下げて電力を節約することができます。
+
[[Wikipedia:Graphics processing unit#GPU accelerated video decoding and encoding|ハードウェアビデオアクセラレーション]]により、ビデオカードで動画をデコード/エンコードすること、CPU の負担を下げて電力を節約することができます。
   
 
Linux でこれを実現する方法は複数存在します:
 
Linux でこれを実現する方法は複数存在します:
* '''[https://www.freedesktop.org/wiki/Software/vaapi/ Video Acceleration API]''' (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現するオープンソースライブラリです。Intel によって開発されました。
 
* '''[https://www.freedesktop.org/wiki/Software/VDPAU/ Video Decode and Presentation API for Unix]''' (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。VDPAU は2015年9月から更新されていません。
 
* [https://developer.nvidia.com/nvidia-video-codec-sdk NVDECODE/NVENCODE] - NVIDIA Fermi, Kepler, Maxwell, Pascal 世代の GPU によって使われているハードウェアビデオアクセラレーションのためのプロプライエタリ API。
 
   
  +
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
2007年以前のビデオカードについては [[XvMC]] を参照してください。ドライバーとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。
 
  +
* [[Wikipedia:VDPAU|Video Decode and Presentation API for Unix]] (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
  +
* [https://gpuopen.com/advanced-media-framework/ Advanced Media Framework SDK] (AMF) は、[[AMDGPU PRO]] を使用してマルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。
  +
* [[Wikipedia:Nvidia NVDEC|NVDEC]]/[[Wikipedia:Nvidia NVENC|NVENC]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。
  +
  +
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。
   
 
== インストール ==
 
== インストール ==
19行目: 21行目:
 
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:
 
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:
   
* CannonLake (あるいは Broadwell) 以降の HD Graphics シリーズは {{Pkg|intel-media-driver}} によってサポートされています。
+
* [https://github.com/intel/media-driver/#supported-platforms Broadwell] [[wikipedia:Template:Intel_processor_roadmap|(2014)]] 及びそれ以降の HD Graphics シリーズ (例: Intel Arc) は {{Pkg|intel-media-driver}} によってサポートされています。
* Coffee Lake までの GMA 4500 シリーズ以降の GPU は {{Pkg|libva-intel-driver}} によってサポートされています。
+
* [[wikipedia:Coffee_Lake|Coffee Lake]] (2017) までの GMA 4500 (2008) は {{Pkg|libva-intel-driver}} によってサポートされています。
* GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコーディ]]を参照。
+
* GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel Graphics#GMA 4500 での H.264 デコードのハードウェアアクセラレーション]] を参照。
* Haswell から Skylake までのハイブリッド VP8 エンコードと VP9 デコードは {{AUR|intel-hybrid-codec-driver}} によってサポートされています。
+
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。
  +
* Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。
  +
  +
[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。
   
 
=== NVIDIA ===
 
=== NVIDIA ===
28行目: 33行目:
 
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています:
 
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています:
   
* GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。
+
* GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。
* NVIDIA のバイナリドライバーから抽出される {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。
+
* (現在 NVIDIA のバイナリドライバーから抽出される) {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。
   
[[NVIDIA]] プロプライエタリドライバVDPAU と NVDECODE/NVENCODE対応しています:
+
[[NVIDIA]] プロプライエタリドライバは {{Pkg|nvidia-utils}}よってサポートされています:
   
* VDPAU GeForce 8 シリーズ以降 {{Pkg|nvidia-utils}}よってサポートされています。
+
* [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降 GPUおける VDPAU
  +
* [[Wikipedia:Fermi_(microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDEC [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf]
* NVDECODE/NVENCODE は Kepler 以降で {{Pkg|nvidia-utils}} によってサポートされています。
 
  +
* [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENC
   
=== ATI/AMD ===
+
=== AMD/ATI ===
   
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています:
+
[[AMD]] と [[ATI]] オープンソースドライバーは VA-API と VDPAU に対応しています:
   
* VDPAU は Radeon R300 以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。
+
* VA-API は Radeon HD 2000 及びそれ以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。
* VA-API は Radeon HD 2000 以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。
+
* VDPAU は Radeon R600 及びそれ以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。
   
[[AMD Catalyst]] プロプライエタリドライバーは [[AMD Catalyst#ビデオアクセション|XvBA]]よって VA-API に対応しています。
+
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU イバ上で動作し、AMF加えて VA-API と VDPAU に対応しています。
   
  +
* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、VA-API と VDPAU に対応しています。
 
   
  +
{{Note|
=== 互換レイヤー ===
 
  +
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。
  +
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。
  +
}}
   
  +
=== 変換レイヤー ===
デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには:
 
   
* {{Pkg|libva-vdpau-driver}} VDPAU の VA-API バックエンド。
+
* {{App|libva-vdpau-driver|VA-API を提供する VDPAU ベースのバックエンド。|https://cgit.freedesktop.org/vaapi/vdpau-driver|{{Pkg|libva-vdpau-driver}}、{{AUR|libva-vdpau-driver-vp9-git}}}}
  +
* {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}}
* {{AUR|libva-vdpau-driver-chromium}} – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。
 
  +
* {{App|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}
   
  +
{{Note|
デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには:
 
  +
* NVIDIA ドライバの 525 シリーズにはリグレッションがあり、VA-API が機能しなくなります。 [https://github.com/elFarto/nvidia-vaapi-driver/issues/126 nvidia-vaapi-driver#126] 修正されるまでの間、ドライバをバージョン 520 に[[ダウングレード]]するか、[https://github.com/elFarto/nvidia-vaapi-driver#direct-backend 実験的な direct-backend] を使用することができます。
 
  +
* {{Pkg|libva-vdpau-driver}} のコードは数年間、変更されていません。最近のバージョンの NVIDIA ドライバで VLC や OBS を使用するとクラッシュします。[https://github.com/obsproject/obs-studio/issues/8056] NVIDIA 用の変換レイヤーが必要である場合は、代わりに {{Pkg|libva-nvidia-driver}} を使用してください。
* {{Pkg|libvdpau-va-gl}} – VA-API の VDPAU バックエンド ([https://github.com/i-rinat/libvdpau-va-gl/issues/67#issuecomment-318470175 H.264 のみサポート])。
 
  +
}}
   
 
== 確認 ==
 
== 確認 ==
  +
  +
設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。
   
 
{{Tip|
 
{{Tip|
* ハードウェアアクセラレーションをテストするときは [[mpv#ハードウェアデコード|mpv]] が向いています
+
* コマンドラインサポートのある [[mpv#ハードウェアデコード|mpv]] は、ハードウェアアクセラレーションをテストするのにぴったりです。{{ic|1=mpv --hwdec=auto ''video_filename''}} のログを見てください。詳細は [https://mpv.io/manual/stable/#options-hwdec hwdec] を参照
* [[Radeon]] の場合、以下のコマンドドライバーの名前を確認できます:
+
* AMD、Intel、そして NVIDIA の場合、動画を再生しながら {{Pkg|nvtop}} を使うこと "DEC" (デコダ) 使用率を確認できます
  +
* Intel GPU の場合、{{pkg|intel-gpu-tools}} を使って、{{ic|intel_gpu_top}} を root として実行することで、ビデオプレイバック中に GPU 使用率をモニタできます。ビデオバーが 0% よりも上にあれば、GPU のビデオデコーダ/エンコーダが使用されていることを示します。
{{hc|$ grep -iE 'vdpau {{!}} dri driver' ~/.local/share/xorg/Xorg.0.log|
 
  +
* AMD GPU の場合、{{Pkg|radeontop}} を使用して GPU 使用率をモニタできます。{{pkg|intel-gpu-tools}} とは違い、現在 {{Pkg|radeontop}} でデコード/エンコードの仕様状況を確認する方法はありません [https://github.com/clbr/radeontop/issues/29]。
(II) RADEON(0): [DRI2] DRI driver: radeonsi
 
  +
* 任意の GPU において、{{Pkg|htop}} のようなツールで CPU 使用率を比較できます。特に、高解像度なビデオ (4k 以上) において、VA-API が有効化されていて動作しているときの CPU 使用率は、ノート PC や他の比較的低電力なデバイスにおいて劇的に低いはずです。
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi
 
}}
 
上記の場合、VA-API と VDPAU の両方で {{ic|radeonsi}} が使えます。
 
* [[GDM]] を使っている場合は {{ic|journalctl -b {{!}} grep -iE 'vdpau {{!}} dri driver'}} を実行してください。
 
 
}}
 
}}
   
106行目: 116行目:
 
VAProfileNone : VAEntrypointVideoProc
 
VAProfileNone : VAEntrypointVideoProc
 
VAProfileJPEGBaseline : VAEntrypointVLD
 
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicturehttp://img.2chan.net/b/futaba.php?mode=cat
+
VAProfileJPEGBaseline : VAEntrypointEncPicture
 
VAProfileVP8Version0_3 : VAEntrypointVLD
 
VAProfileVP8Version0_3 : VAEntrypointVLD
 
VAProfileVP8Version0_3 : VAEntrypointEncSlice
 
VAProfileVP8Version0_3 : VAEntrypointEncSlice
 
VAProfileHEVCMain : VAEntrypointVLD
 
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice</nowiki>
+
VAProfileHEVCMain : VAEntrypointEncSlice
  +
</nowiki>}}
}}
 
   
 
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。
 
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。
   
 
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:
 
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:
  +
libva info: Trying to open /usr/lib/dri/'''i965'''_drv_video.so
 
  +
vainfo: Driver version: Intel '''i965''' driver for Intel(R) Skylake - 1.7.3
   
 
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合:
 
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合:
  +
 
libva info: va_openDriver() returns -1
 
libva info: va_openDriver() returns -1
 
vaInitialize failed with error code -1 (unknown libva error),exit
 
vaInitialize failed with error code -1 (unknown libva error),exit
   
適切なドライバーを設定する必要があります。[[#VA-API の設定|VA-API の設定]]を見てください。
+
適切なドライバーを設定する必要があります。[[#VA-API の設定]] を見てください。
   
 
=== VDPAU の確認 ===
 
=== VDPAU の確認 ===
137行目: 149行目:
 
name width height types
 
name width height types
 
-------------------------------------------
 
-------------------------------------------
420 16384 16384 NV12 YV12
+
420 16384 16384 NV12 YV12
422 16384 16384 UYVY YUYV
+
422 16384 16384 UYVY YUYV
444 16384 16384 Y8U8V8A8 V8U8Y8A8
+
444 16384 16384 Y8U8V8A8 V8U8Y8A8
   
 
Decoder capabilities:
 
Decoder capabilities:
154行目: 166行目:
 
VC1_MAIN 2 9216 2048 1152
 
VC1_MAIN 2 9216 2048 1152
 
VC1_ADVANCED 4 9216 2048 1152
 
VC1_ADVANCED 4 9216 2048 1152
  +
...
 
..</nowiki>}}
+
</nowiki>}}
   
 
== 設定 ==
 
== 設定 ==
  +
{{Note|VA-API と VDPAU のどちらでもビデオドライバーは基本的にハードウェアビデオアクセラレーションを自動的に有効化しますが、場合によっては手動で VA-API/VDPAU を手動で有効にする必要があります。有効化されているかどうか[[#確認|確認]]をしてください。}}
 
  +
ビデオドライバは VA-API と VDPAU の両方に対してハードウェアビデオアクセラレーションのサポートを自動的に有効化するはずですが、場合によっては手動で VA-API/VDPAU を手動で設定する必要があります。[[#確認]] セクションを見た場合にのみ、このセクションを読み進めてください。
  +
  +
(他に設定が存在しない場合に使用される) デフォルトのドライバ名はシステムによって推測されます。しかし、それらはしばしばトリッキーで、機能しないこともあります。推測された値は [[Xorg]] のログファイルに出力されます。ログファイルは、Xorg が rootless の場合は {{ic|~/.local/share/xorg/Xorg.0.log}}、Xorg が root として実行されている場合は {{ic|/var/log/Xorg.0.log}} です。ログファイルからある値を検索するには:
  +
  +
{{hc|$ grep -iE 'vdpau {{!}} dri driver' ''xorg_のログファイル''|
  +
(II) RADEON(0): [DRI2] DRI driver: radeonsi
  +
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi
  +
}}
  +
  +
この出力の場合、{{ic|radeonsi}} が VA-API と VDPAU のデフォルトです。
  +
  +
{{Note|[[GDM]] を使用している場合、代わりに {{ic|1=journalctl -b --grep='vdpau {{!}} dri driver'}} を root として実行してください。}}
  +
  +
しかし、これは ''設定'' を表すものではありません。上記の値は、オーバーライドしたとしても変更されません。
   
 
=== VA-API の設定 ===
 
=== VA-API の設定 ===
   
VA-API のドライバーは自動で認識されま [https://www.freedesktop.org/wiki/Software/vaapi/#driversback-endsthatimplementva-api]。使用されているドライバーを確認する方法は[[#確認|確認]]を見てください。{{ic|LIBVA_DRIVER_NAME}} [[環境変数]]を設定することで使用するドライバーを上書きできます:
+
{{ic|LIBVA_DRIVER_NAME}} [[環境変数]] を使うことで、VA-API 用に使用[https://www.freedesktop.org/wiki/Software/vaapi/#driversback-endsthatimplementva-api ドライバ]をオーバーライできます:
   
 
* [[Intel Graphics]]:
 
* [[Intel Graphics]]:
169行目: 195行目:
 
* NVIDIA:
 
* NVIDIA:
 
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。
 
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。
** [[NVIDIA]] の場合は {{ic|vdpau}} を使ってください。
+
** [[NVIDIA]] VDPAU の場合は {{ic|vdpau}} を使ってください。
  +
** [[NVIDIA]] NVDEC の場合は {{ic|nvidia}} を使ってください。
* ATI/AMD:
 
  +
* AMD:
** [[AMDGPU]] の場合は {{ic|radeonsi}} を使ってください。
 
** [[AMD Catalyst]] の場合は {{ic|fglrx}} を使ってください。
+
** [[AMDGPU]] ドライバの場合は {{ic|radeonsi}} を使ってください。
   
 
{{Note|
 
{{Note|
 
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/'''${LIBVA_DRIVER_NAME}'''_drv_video.so}} として使われます。
 
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/'''${LIBVA_DRIVER_NAME}'''_drv_video.so}} として使われます。
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/*}} を実行することで確認できます。
+
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/* {{!}} sort}} を実行することで確認できます。
 
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。
 
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。
 
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。
 
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。
183行目: 209行目:
 
=== VDPAU の設定 ===
 
=== VDPAU の設定 ===
   
VDPAU で使用されるドライバーは自動的に認識されますが、{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで上書きすることができます。
+
{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで、VDPAU 用に使用するドライバをオーバーライドできます。
   
  +
適切なドライバ名は、あなたのセットアップに依存します:
使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください:
 
   
* Intel Graphics や AMD Catalyst の場合 {{ic|va_gl}} に[[#Failed_to_open_VDPAU_backend|設定]]する必要があります。
+
* Intel graphics の場合{{ic|va_gl}} に設定する[[#Failed to open VDPAU backend|必要があります]]
* オープンソースの AMD/ATI ドライバの場合、使用している GPU にわせて適切なドライバーを設定してください。[[#確認|確認]]を参照。
+
* オープンソースの AMD ドライバの場合、あなたの GPU にわせて適切なドライバージョンを設定してください。[[#確認]] を参照。
* オープンソースの Nouveau ドライバの場合{{ic|nouveau}} に設定してください。
+
* オープンソースの Nouveau ドライバの場合{{ic|nouveau}} に設定してください。
* NVIDIA のプロプライエタリドライバーの場合{{ic|nvidia}} に設定してください。
+
* NVIDIA のプロプライエタリバージョンの場合{{ic|nvidia}} に設定してください。
   
 
{{Note|
 
{{Note|
 
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_'''${VDPAU_DRIVER}'''.so}} として使われます。
 
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_'''${VDPAU_DRIVER}'''.so}} として使われます。
 
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。
 
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|1=DRI_PRIME=1}} [[環境変数|設定]]する必要があるかもしれません。詳しくは [[PRIME]] を参照。}}
+
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|DRI_PRIME}} [[環境変数]]を設定する必要があるかもしれません。詳しくは [[PRIME]] を参照。
  +
}}
  +
  +
=== アプリケーションの設定 ===
  +
  +
マルチメディアフレームワーク:
  +
  +
* [[FFmpeg#ハードウェアビデオアクセラレーション]]
  +
* [[GStreamer#ハードウェアアクセラレーション]]
  +
  +
ビデオプレイヤ:
  +
  +
* [[Kodi#ヒントとテクニック]]
  +
* [[MPlayer#ハードウェアアクセラレーション]]
  +
* [[mpv#ハードウェアデコード]]
  +
* [[VLC media player#ハードウェアアクセラレーションのサポート]]
  +
  +
ウェブブラウザ:
  +
  +
* [[Chromium#ハードウェアビデオアクセラレーション]]
  +
* [[Firefox#ハードウェアビデオアクセラレーション]]
  +
* [[GNOME Web#ハードウェアアクセラレーション]]
  +
  +
マルチメディア録画/ストリーミング:
  +
  +
* [[Open Broadcaster Software#ハードウェアアクセラレーション]]
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
201行目: 252行目:
 
=== Failed to open VDPAU backend ===
 
=== Failed to open VDPAU backend ===
   
{{pkg|libvdpau-va-gl}} 使用している場合に {{ic|VDPAU_DRIVER}} を上書きしないと発生するエラーです。何らかの理由で VDPAU 使用るドライバーを正しく認識できていません。[[#VDPAU の設定|VDPAU の設定]]を見てください
+
適切なドライバ指すように {{ic|VDPAU_DRIVER}} 変数設定する必要あります。[[#VDPAU の設定]] 参照
 
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。[[#ソフトウェア|ソフトウェア]]を参照。
 
   
 
=== VAAPI init failed ===
 
=== VAAPI init failed ===
   
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, mplayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--opengl-backend=wayland}} パラメータを追加することでも解決できます。
+
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, MPlayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--gpu-context=wayland}} パラメータを追加することでも解決できます。
  +
  +
このエラーは、あなたのハードウェアに合わない VA-API ドライバをインストールした場合にも起こりえます。
   
 
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み ===
 
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み ===
   
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic | 1 = allow_rgb10_configs = false}} を [[環境変数]] または {{ic | driconf}} として設定します。 [https://bugs.freedesktop.org/show_bug.cgi?id=106490]
+
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic|1=allow_rgb10_configs=false}} を [[環境変数]] または {{ic|driconf}} として設定します。[https://bugs.freedesktop.org/show_bug.cgi?id=106490]
   
== 対応状況 ==
+
== 比較一覧 ==
   
=== ハーウェア ===
+
=== VA-API ライバ ===
 
==== VA-API ====
 
   
 
{| class="wikitable" style="text-align:center;"
 
{| class="wikitable" style="text-align:center;"
224行目: 273行目:
 
! {{pkg|intel-media-driver}} [https://github.com/intel/media-driver/blob/master/README.md]
 
! {{pkg|intel-media-driver}} [https://github.com/intel/media-driver/blob/master/README.md]
 
! {{pkg|libva-mesa-driver}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
 
! {{pkg|libva-mesa-driver}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
  +
! {{pkg|libva-vdpau-driver}} <br> (VDPAU アダプタ)
! [[AMD Catalyst#ビデオアクセラレーション|Catalyst XvBA]]
 
! {{pkg|libva-vdpau-driver}}
+
! {{Pkg|libva-nvidia-driver}}<br> (NVDEC アダプタ)
(VDPAU アダプタ)
 
 
|-
 
|-
 
! colspan=6 | デコード
 
! colspan=6 | デコード
 
|-
 
|-
! MPEG2
+
! MPEG-2
 
| {{G|GMA 4500 以降}}
 
| {{G|GMA 4500 以降}}
 
| {{G|Broadwell 以降}}
 
| {{G|Broadwell 以降}}
 
| {{G|Radeon HD 6000 以降<br>GeForce 8 以降<sup>1</sup>}}
 
| {{G|Radeon HD 6000 以降<br>GeForce 8 以降<sup>1</sup>}}
  +
| rowspan=6 | [[#VDPAU ドライバ]] を参照
| {{G|Radeon HD 4000 以降}}
 
| rowspan=6 | [[#VDPAU]] を参照
+
| rowspan=10 | [[#NVIDIA ドライバのみ]] を参照
 
|-
 
|-
  +
! H.263/MPEG-4 Visual<sup>4</sup>
! MPEG4
 
 
| {{No}}
 
| {{No}}
 
| {{No}}
 
| {{No}}
| {{G|Radeon HD 6000 以降}}
 
 
| {{G|Radeon HD 6000 以降}}
 
| {{G|Radeon HD 6000 以降}}
 
|-
 
|-
  +
! VC-1
! AVC (H.264)
 
  +
| {{G|Sandy Bridge 以降}}
  +
| rowspan=2 {{G|Broadwell 以降}}
  +
| {{G|Radeon HD 2000 以降<br>GeForce 9300 以降<sup>1</sup>}}
  +
|-
  +
! H.264/MPEG-4 AVC
 
| {{G|GMA 4500<sup>2</sup>, Ironlake 以降}}
 
| {{G|GMA 4500<sup>2</sup>, Ironlake 以降}}
| {{G|Broadwell 以降}}
 
 
| {{G|Radeon HD 2000 以降<br>GeForce 8 以降<sup>1</sup>}}
 
| {{G|Radeon HD 2000 以降<br>GeForce 8 以降<sup>1</sup>}}
| {{G|Radeon HD 4000 以降}}
 
 
|-
 
|-
! HEVC (H.265) 8bit
+
! H.265/HEVC 8bit
 
| {{G|Cherryview/Braswell 以降}}
 
| {{G|Cherryview/Braswell 以降}}
 
| {{G|Skylake 以降}}
 
| {{G|Skylake 以降}}
 
| {{G|Radeon R9 Fury 以降}}
 
| {{G|Radeon R9 Fury 以降}}
| rowspan=2 {{No}}
 
 
|-
 
|-
! HEVC (H.265) 10bit
+
! H.265/HEVC 10bit
 
| {{G|Broxton 以降}}
 
| {{G|Broxton 以降}}
 
| {{G|Broxton/Apollo Lake 以降}}
 
| {{G|Broxton/Apollo Lake 以降}}
 
| {{G|Radeon 400 以降}}
 
| {{G|Radeon 400 以降}}
|-
 
! VC1
 
| {{G|Sandy Bridge 以降}}
 
| rowspan=2 {{G|Broadwell 以降}}
 
| {{G|Radeon HD 2000 以降<br>GeForce 9300 以降<sup>1</sup>}}
 
| {{G|Radeon HD 4000 以降}}
 
 
|-
 
|-
 
! VP8
 
! VP8
  +
| {{G|Broadwell 以降}}
 
| {{G|Broadwell 以降}}
 
| {{G|Broadwell 以降}}
 
| {{No}}
 
| {{No}}
| rowspan=3 {{No}}
+
| {{No}}
| rowspan=3 {{No}}
 
 
|-
 
|-
 
! VP9 8bit
 
! VP9 8bit
| {{G|Broxton 以降 <br> Hybrid: Haswell から Skylake<sup>3</sup>}}
+
| {{G|Broxton 以降 <br> Hybrid: Haswell refresh から Skylake<sup>3</sup>}}
 
| {{G|Broxton/Apollo Lake 以降}}
 
| {{G|Broxton/Apollo Lake 以降}}
| rowspan=2 {{G|Raven Ridge 以降}}
+
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}
  +
| [[#VDPAU ドライバ]] を参照<sup>5</sup>
 
|-
 
|-
! VP9 10bit
+
! VP9 10bit & 12bit
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
  +
| rowspan=2 {{No}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{No}}
  +
| {{G|Tiger Lake 以降}}
  +
| {{G|Radeon RX 6600 以上/以降}}
 
|-
 
|-
 
! colspan=6 | エンコード
 
! colspan=6 | エンコード
 
|-
 
|-
! MPEG2
+
! MPEG-2
 
| {{G|Ivy Bridge 以降}}
 
| {{G|Ivy Bridge 以降}}
| {{G|Broadwell 以降<br>Broxton/Apollo Lake 除く}}
+
| {{G|Broadwell 以降<br>Broxton/Apollo Lake 除く}}
 
| {{No}}
 
| {{No}}
| rowspan=7 {{No}}
+
| rowspan=8 {{-}}
| rowspan=7 {{No}}
+
| rowspan=8 {{No}}<sup>6</sup>
 
|-
 
|-
! AVC (H.264)
+
! H.264/MPEG-4 AVC
 
| {{G|Sandy Bridge 以降}}
 
| {{G|Sandy Bridge 以降}}
 
| {{G|Broadwell 以降}}
 
| {{G|Broadwell 以降}}
 
| {{G|Radeon HD 7000 以降}}
 
| {{G|Radeon HD 7000 以降}}
 
|-
 
|-
! HEVC (H.265) 8bit
+
! H.265/HEVC 8bit
 
| {{G|Skylake 以降}}
 
| {{G|Skylake 以降}}
 
| {{G|Skylake 以降}}
 
| {{G|Skylake 以降}}
| rowspan=2 {{G|Raven Ridge 以降}}
+
| {{G|Radeon 400 以降}}
 
|-
 
|-
! HEVC (H.265) 10bit
+
! H.265/HEVC 10bit
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
| rowspan=2 {{G|Cannonlake 以降}}
+
| rowspan=2 {{G|Kaby Lake 以降}}
  +
| {{G|Raven Ridge + Radeon RX 5000 以降}}
 
|-
 
|-
 
! VP8
 
! VP8
312行目: 363行目:
 
| rowspan=2 {{G|Icelake 以降}}
 
| rowspan=2 {{G|Icelake 以降}}
 
|-
 
|-
! VP9 10bit
+
! VP9 10bit & 12bit
| {{No}}
+
| rowspan=2 {{No}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{G|Alchemist 以降}}
  +
| {{G|Radeon RX 7900 以上/以降}}
 
|}
 
|}
   
* <sup>1</sup> GeForce GTX 750 まで対応
+
* <sup>1</sup> GeForce GTX 750 まで。
* <sup>2</sup> {{aur|libva-intel-driver-g45-h264}} パッケージによってサポートされています。
+
* <sup>2</sup> 代わりに {{aur|libva-intel-driver-g45-h264}} によってサポートされています。
* <sup>3</sup> Hybrid VP8 エンコーダVP9 コーダは {{AUR|intel-hybrid-codec-driver}} によってサポートされています [https://github.com/01org/intel-hybrid-driver/blob/master/README]
+
* <sup>3</sup> Hybrid VP8 エンコーダVP9 エンコーダは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。
  +
* <sup>4</sup> MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、{{ic|1=VAAPI_MPEG4_ENABLED=true}} [[環境変数]]を設定してください。
  +
* <sup>5</sup> 実験的な VP9 サポートは代わりに {{AUR|libva-vdpau-driver-vp9-git}} によって提供されています。
  +
* <sup>6</sup> NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [https://github.com/elFarto/nvidia-vaapi-driver/issues/116]。
   
==== VDPAU ====
+
=== VDPAU ドライバ ===
 
{{Note|VDPAU は2015年9月から更新されておらず VP8 と VP9 をサポートしていません [https://gitlab.freedesktop.org/vdpau/libvdpau]。}}
 
   
 
{| class="wikitable" style="text-align:center;"
 
{| class="wikitable" style="text-align:center;"
 
! コーデック
 
! コーデック
  +
! 色深度
 
! {{pkg|mesa-vdpau}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
 
! {{pkg|mesa-vdpau}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
! {{pkg|nvidia-utils}} [https://www.nvidia.com/page/purevideo_support.html]
+
! {{pkg|nvidia-utils}}
 
! {{pkg|libvdpau-va-gl}}<br>(VA-API アダプタ)
 
! {{pkg|libvdpau-va-gl}}<br>(VA-API アダプタ)
 
|-
 
|-
 
! colspan=5 | デコード
 
! colspan=5 | デコード
 
|-
 
|-
! MPEG2
+
! MPEG-2
  +
! 8bit
| {{G|Radeon R300 以降 <br> GeForce 8 以降<sup>1</sup>}}
 
  +
| {{G|Radeon R600 以降 <br> GeForce 8 以降<sup>1</sup>}}
 
| {{G|GeForce 8 以降}}
 
| {{G|GeForce 8 以降}}
| rowspan=2 {{R|No}}
+
| rowspan=3 {{No}}
 
|-
 
|-
  +
! H.263/MPEG-4 Visual
! MPEG4
 
  +
! 8bit
 
| {{G|Radeon HD 6000 以降 <br> GeForce 200 以降<sup>1</sup>}}
 
| {{G|Radeon HD 6000 以降 <br> GeForce 200 以降<sup>1</sup>}}
 
| {{G|GeForce 200 以降}}
 
| {{G|GeForce 200 以降}}
 
|-
 
|-
  +
! VC-1
! AVC (H.264)
 
  +
! 8bit
  +
| {{G|Radeon HD 2000 以降 <br> GeForce 9300 以降<sup>1</sup>}}
  +
| {{G|GeForce 8 以降<sup>2</sup>}}
  +
|-
  +
! H.264/MPEG-4 AVC
  +
! 8bit
 
| {{G|Radeon HD 2000 以降 <br> GeForce 8 以降<sup>1</sup>}}
 
| {{G|Radeon HD 2000 以降 <br> GeForce 8 以降<sup>1</sup>}}
 
| {{G|GeForce 8 以降}}
 
| {{G|GeForce 8 以降}}
| [[#VA-API]] を参照
+
| [[#VA-API ドライバ]] を参照
 
|-
 
|-
! HEVC (H.265) 8bit
+
! rowspan=2 | H.265/HEVC
  +
! 8bit
 
| {{G|Radeon R9 Fury 以降}}
 
| {{G|Radeon R9 Fury 以降}}
| {{G|GeForce 900 以降<sup>2</sup>}}
+
| {{G|GeForce 900 以降<sup>3</sup>}}
| rowspan=3 {{No}}
+
| rowspan=6 {{No}}
 
|-
 
|-
! HEVC (H.265) 10bit
+
! 10bit
 
| {{G|Radeon 400 以降}}
 
| {{G|Radeon 400 以降}}
| {{No}}<sup>3</sup>
+
| {{No}}<sup>4</sup>
 
|-
 
|-
  +
! rowspan=2 | VP9
! VC1
 
  +
! 8bit
| {{G|Radeon HD 2000 以降 <br> GeForce 9300 以降<sup>1</sup>}}
 
| {{G|GeForce 8 以降<sup>4</sup>}}
+
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}
  +
| {{G|GeForce 900 以降<sup>3</sup>}}
  +
|-
  +
! 10bit/12bit
  +
| {{No}}<sup>4</sup>
  +
|-
  +
! rowspan=2 | AV1
  +
! 8bit
  +
| rowspan=2 {{G|Radeon RX 6600 以上/以降}}
  +
| {{G|GeForce 30 以降}}<sup>5</sup>
  +
|-
  +
! 10bit
  +
| {{No}}<sup>4</sup>
 
|}
 
|}
   
* <sup>1</sup> GeForce GTX 750 まで対応
+
* <sup>1</sup> GeForce GTX 750 まで。
* <sup>2</sup> GeForce GTX 970 と GTX 980 は除く。
+
* <sup>2</sup> GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB)[[Wikipedia:Nvidia PureVideo|除く]]
  +
* <sup>3</sup> GeForce GTX 970 と GTX 980 は除く。
* <sup>3</sup> NVIDIA の実装は8ビットストリームまでに制限されています [https://devtalk.nvidia.com/default/topic/940228/vdpau-expose-hevc-main10-support-where-available-on-die/] [https://us.download.nvidia.com/XFree86/Linux-x86_64/410.57/README/vdpausupport.html#vdpau-implementation-limits]。
 
  +
* <sup>4</sup> NVIDIA の実装は8ビットストリームまでに制限されています [https://forums.developer.nvidia.com/t/vdpau-expose-hevc-main10-support-where-available-on-die/43163] [https://us.download.nvidia.com/XFree86/Linux-x86_64/410.57/README/vdpausupport.html#vdpau-implementation-limits]。
* <sup>4</sup> GeForce 8800 Ultra, 8800 GTX, 8800 GTS (320/640 MB) は[[Wikipedia:Nvidia PureVideo|除く]]。
 
  +
* <sup>5</sup> ドライババージョン 510 から [https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-510-Linux-Beta]
   
==== NVDECODE/NVENCODE ====
+
=== NVIDIA ドライバのみ ===
   
 
{| class="wikitable" style="text-align:center;"
 
{| class="wikitable" style="text-align:center;"
 
! rowspan=2 | コーデック
 
! rowspan=2 | コーデック
! colspan=2 | {{Pkg|nvidia-utils}}
+
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]
 
|-
 
|-
  +
! NVDEC
! [https://developer.nvidia.com/nvidia-video-codec-sdk#NVDECFeatures デコード]
 
  +
! NVENC
! [https://developer.nvidia.com/nvidia-video-codec-sdk#NVENCFeatures エンコード]
 
 
|-
 
|-
 
! MPEG-2
 
! MPEG-2
| rowspan=3 {{G|Kepler 以降<sup>1</sup>}}
+
| rowspan=3 {{G|Fermi 以降<sup>1</sup>}}
 
| rowspan=2 {{No}}
 
| rowspan=2 {{No}}
 
|-
 
|-
 
! VC-1
 
! VC-1
 
|-
 
|-
! AVC (H.264)
+
! H.264/MPEG-4 AVC
 
| {{G|Kepler 以降<sup>2</sup>}}
 
| {{G|Kepler 以降<sup>2</sup>}}
 
|-
 
|-
! HEVC (H.265) 8bit
+
! H.265/HEVC 8bit
 
| rowspan=2 {{G|Maxwell (GM206) 以降}}
 
| rowspan=2 {{G|Maxwell (GM206) 以降}}
 
| {{G|Maxwell (2nd Gen) 以降}}
 
| {{G|Maxwell (2nd Gen) 以降}}
 
|-
 
|-
! HEVC (H.265) 10bit
+
! H.265/HEVC 10bit
 
| {{G|Pascal 以降}}
 
| {{G|Pascal 以降}}
 
|-
 
|-
397行目: 476行目:
 
| {{G|Maxwell (GM206) 以降}}
 
| {{G|Maxwell (GM206) 以降}}
 
|-
 
|-
! VP9 10bit
+
! VP9 10bit & 12bit
 
| {{G|Pascal 以降}}
 
| {{G|Pascal 以降}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{G|Ampere 以降<sup>3</sup>}}
  +
| {{G|Ada Lovelace 以降}}
 
|}
 
|}
   
 
* <sup>1</sup> GM108 は除く (未サポート)
 
* <sup>1</sup> GM108 は除く (未サポート)
 
* <sup>2</sup> GM108 と GP108 は除く (未サポート)
 
* <sup>2</sup> GM108 と GP108 は除く (未サポート)
  +
* <sup>3</sup> A100 は除く (未サポート)
   
  +
=== アプリケーションサポート ===
=== ソフトウェア ===
 
   
 
{| class="wikitable"
 
{| class="wikitable"
  +
! rowspan=2 | アプリケーション
!
 
  +
! colspan=3 | デコード
  +
! colspan=2 | エンコード
  +
! rowspan=2 | ドキュメント
  +
|-
 
! VA-API
 
! VA-API
 
! VDPAU
 
! VDPAU
  +
! NVDEC
! NVDECODE
 
  +
! VA-API
! ドキュメント
 
  +
! NVENC
 
|-
 
|-
 
! [[FFmpeg]]
 
! [[FFmpeg]]
417行目: 506行目:
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
  +
| {{Yes}}
| [[FFmpeg#ハードウェアアクセラレーション]]
 
  +
| {{Yes}}
  +
| [[FFmpeg#ハードウェアビデオアクセラレーション]]
 
|-
 
|-
 
! [[GStreamer]]
 
! [[GStreamer]]
| {{Yes}} ({{pkg|gstreamer-vaapi}})
+
| {{Yes}}
  +
| {{No}}
| {{Yes}} ({{pkg|gst-plugins-bad}})
 
| {{Yes}} ({{pkg|gst-plugins-bad}})
+
| {{Yes}}
  +
| {{Yes}}
  +
| {{Yes}}
 
| [[GStreamer#ハードウェアアクセラレーション]]
 
| [[GStreamer#ハードウェアアクセラレーション]]
 
|-
 
|-
428行目: 521行目:
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
| {{Yes}}
+
| {{No}}
  +
| {{-}}
| [[Kodi#ヒントとテクニック‎]]
 
  +
| {{-}}
  +
| [[Kodi#ヒントとテクニック]]
 
|-
 
|-
 
! [[mpv]]
 
! [[mpv]]
435行目: 530行目:
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
  +
| {{-}}
  +
| {{-}}
 
| [[mpv#ハードウェアデコード]]
 
| [[mpv#ハードウェアデコード]]
 
|-
 
|-
441行目: 538行目:
 
| {{Yes}}
 
| {{Yes}}
 
| {{No}}
 
| {{No}}
  +
| {{-}}
  +
| {{-}}
 
| [[VLC media player#ハードウェアアクセラレーションのサポート]]
 
| [[VLC media player#ハードウェアアクセラレーションのサポート]]
 
|-
 
|-
 
! [[MPlayer]]
 
! [[MPlayer]]
  +
| {{Yes}}<sup>1</sup>
| {{Y|{{AUR|mplayer-vaapi}}}}
 
 
| {{Yes}}
 
| {{Yes}}
 
| {{No}}
 
| {{No}}
  +
| {{-}}
  +
| {{-}}
 
| [[MPlayer#ハードウェアアクセラレーション]]
 
| [[MPlayer#ハードウェアアクセラレーション]]
 
|-
 
|-
 
! [[Flash]]
 
! [[Flash]]
  +
| {{No}}<sup>2</sup>
| {{Y|NPAPI のみ: <br> {{AUR|freshplayerplugin}}}}
 
  +
| {{Yes}}<sup>2</sup>
| {{Y|NPAPI のみ: <br> {{Pkg|flashplugin}} または <br> {{AUR|freshplayerplugin}}}}
 
 
| {{No}}
 
| {{No}}
  +
| {{-}}
  +
| {{-}}
 
| [[ブラウザプラグイン#Adobe Flash Player]]
 
| [[ブラウザプラグイン#Adobe Flash Player]]
 
|-
 
|-
 
! [[Chromium]]
 
! [[Chromium]]
  +
| {{Yes}}
| {{Y|{{AUR|chromium-vaapi}}}}
 
 
| {{No}}
 
| {{No}}
 
| {{No}}
 
| {{No}}
  +
| {{Yes}}
| [[Chromium#設定]]
 
  +
| {{No}}
  +
| [[Chromium#ハードウェアビデオアクセラレーション]]
 
|-
 
|-
 
! [[Firefox]]
 
! [[Firefox]]
465行目: 570行目:
 
| {{No}}
 
| {{No}}
 
| {{No}}
 
| {{No}}
| [https://bugzilla.mozilla.org/show_bug.cgi?id=1210726 バグレポート]
+
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1658900}}
  +
| {{No}}
  +
| [[Firefox#ハードウェアビデオアクセラレーション]]
  +
|-
  +
! [[GNOME/Web]]
  +
| colspan=3 {{C|GStreamer}}
  +
| {{C|?}}
  +
| {{C|?}}
  +
| [[GNOME Web#ビデオ]]
 
|}
 
|}
   
  +
* <sup>1</sup> VA-API サポートは代わりに {{AUR|mplayer-vaapi}} によって提供されています。
{{Tip|VP8/VP9 のハードウェアデコードが使えない場合に YouTube を視聴する際に CPU の使用量を減らしたいときは h264ify 拡張を使ってください ([https://addons.mozilla.org/en-US/firefox/addon/h264ify/ Firefox]/[https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal Chromium])。}}
 
  +
* <sup>2</sup> VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
  +
  +
{{TranslationStatus|Hardware video acceleration|2024-07-23|812272}}

2024年9月3日 (火) 22:43時点における最新版

ハードウェアビデオアクセラレーションにより、ビデオカードで動画をデコード/エンコードすることができ、CPU の負担を下げて電力を節約することができます。

Linux でこれを実現する方法は複数存在します:

  • Video Acceleration API (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
  • Video Decode and Presentation API for Unix (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
  • Advanced Media Framework SDK (AMF) は、AMDGPU PRO を使用してマルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。
  • NVDEC/NVENC - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。

ドライバとアプリケーションのサポートの包括的な概要については、#比較一覧 を参照してください。

インストール

Intel

Intel Graphics オープンソースドライバーは VA-API に対応しています:

VAAPI がサポートするハードウェアと機能 もご覧ください。

NVIDIA

Nouveau オープンソースドライバーは VA-API と VDPAU に対応しています:

  • GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は libva-mesa-drivermesa-vdpau によってサポートされています。
  • (現在 NVIDIA のバイナリドライバーから抽出される) nouveau-fwAUR ファームウェアパッケージが 必要 です。

NVIDIA プロプライエタリドライバは nvidia-utils によってサポートされています:

AMD/ATI

AMDATI オープンソースドライバーは VA-API と VDPAU に対応しています:

  • VA-API は Radeon HD 2000 及びそれ以降の GPU で libva-mesa-driver によってサポートされています。
  • VDPAU は Radeon R600 及びそれ以降の GPU で mesa-vdpau によってサポートされています。

AMDGPU PRO プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。

  • Fiji 及びそれ以降の GPU における AMF は amf-amdgpu-proAUR によってサポートされています。
ノート:
  • 場合によっては、あなたのアプリケーションが AMDGPU PRO Vulkan ドライバを使用するように強制する必要があります。
  • HEVC エンコードは Navi より古い GPU では利用できない場合があります。

変換レイヤー

  • libva-vdpau-driver — VA-API を提供する VDPAU ベースのバックエンド。
https://cgit.freedesktop.org/vaapi/vdpau-driver || libva-vdpau-driverlibva-vdpau-driver-vp9-gitAUR
  • libvdpau-va-gl — OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。
https://github.com/i-rinat/libvdpau-va-gl || libvdpau-va-gl
  • nvidia-vaapi-driver — VA-API を提供する CUDA NVDEC ベースのバックエンド。
https://github.com/elFarto/nvidia-vaapi-driver/ || libva-nvidia-driver
ノート:
  • NVIDIA ドライバの 525 シリーズにはリグレッションがあり、VA-API が機能しなくなります。 nvidia-vaapi-driver#126 修正されるまでの間、ドライバをバージョン 520 にダウングレードするか、実験的な direct-backend を使用することができます。
  • libva-vdpau-driver のコードは数年間、変更されていません。最近のバージョンの NVIDIA ドライバで VLC や OBS を使用するとクラッシュします。[2] NVIDIA 用の変換レイヤーが必要である場合は、代わりに libva-nvidia-driver を使用してください。

確認

設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。

ヒント:
  • コマンドラインサポートのある mpv は、ハードウェアアクセラレーションをテストするのにぴったりです。mpv --hwdec=auto video_filename のログを見てください。詳細は hwdec を参照。
  • AMD、Intel、そして NVIDIA の場合、動画を再生しながら nvtop を使うことで "DEC" (デコーダ) の使用率を確認できます。
  • Intel GPU の場合、intel-gpu-tools を使って、intel_gpu_top を root として実行することで、ビデオプレイバック中に GPU 使用率をモニタできます。ビデオバーが 0% よりも上にあれば、GPU のビデオデコーダ/エンコーダが使用されていることを示します。
  • AMD GPU の場合、radeontop を使用して GPU 使用率をモニタできます。intel-gpu-tools とは違い、現在 radeontop でデコード/エンコードの仕様状況を確認する方法はありません [3]
  • 任意の GPU において、htop のようなツールで CPU 使用率を比較できます。特に、高解像度なビデオ (4k 以上) において、VA-API が有効化されていて動作しているときの CPU 使用率は、ノート PC や他の比較的低電力なデバイスにおいて劇的に低いはずです。

VA-API の確認

VA-API の設定は libva-utils パッケージに含まれている vainfo を実行することで確認できます:

$ vainfo
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      :	VAEntrypointVLD
      VAProfileH264MultiviewHigh      :	VAEntrypointEncSlice
      VAProfileH264StereoHigh         :	VAEntrypointVLD
      VAProfileH264StereoHigh         :	VAEntrypointEncSlice
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice

あなたのカードを使ってデコードできるフォーマットが VAEntrypointVLD で、エンコードできるフォーマットが VAEntrypointEncSlice で示されます。

上の例では、以下の行があることから i965 ドライバーが使われていることが確認できます:

vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3

vainfo を実行したときに以下のようなエラーが表示される場合:

libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

適切なドライバーを設定する必要があります。#VA-API の設定 を見てください。

VDPAU の確認

vdpauinfo をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:

$ vdpauinfo
display: :0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface:

name   width height types
-------------------------------------------
420    16384 16384  NV12 YV12
422    16384 16384  UYVY YUYV
444    16384 16384  Y8U8V8A8 V8U8Y8A8

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                          --- not supported ---
MPEG2_SIMPLE                    3  9216  2048  1152
MPEG2_MAIN                      3  9216  2048  1152
H264_BASELINE                  41  9216  2048  1152
H264_MAIN                      41  9216  2048  1152
H264_HIGH                      41  9216  2048  1152
VC1_SIMPLE                      1  9216  2048  1152
VC1_MAIN                        2  9216  2048  1152
VC1_ADVANCED                    4  9216  2048  1152
...

設定

ビデオドライバは VA-API と VDPAU の両方に対してハードウェアビデオアクセラレーションのサポートを自動的に有効化するはずですが、場合によっては手動で VA-API/VDPAU を手動で設定する必要があります。#確認 セクションを見た場合にのみ、このセクションを読み進めてください。

(他に設定が存在しない場合に使用される) デフォルトのドライバ名はシステムによって推測されます。しかし、それらはしばしばトリッキーで、機能しないこともあります。推測された値は Xorg のログファイルに出力されます。ログファイルは、Xorg が rootless の場合は ~/.local/share/xorg/Xorg.0.log、Xorg が root として実行されている場合は /var/log/Xorg.0.log です。ログファイルからある値を検索するには:

$ grep -iE 'vdpau | dri driver' xorg_のログファイル
(II) RADEON(0): [DRI2] DRI driver: radeonsi
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi

この出力の場合、radeonsi が VA-API と VDPAU のデフォルトです。

ノート: GDM を使用している場合、代わりに journalctl -b --grep='vdpau | dri driver' を root として実行してください。

しかし、これは 設定 を表すものではありません。上記の値は、オーバーライドしたとしても変更されません。

VA-API の設定

LIBVA_DRIVER_NAME 環境変数 を使うことで、VA-API 用に使用するドライバをオーバーライドできます:

  • Intel Graphics:
  • NVIDIA:
    • Nouveau の場合は nouveau を使ってください。
    • NVIDIA VDPAU の場合は vdpau を使ってください。
    • NVIDIA NVDEC の場合は nvidia を使ってください。
  • AMD:
    • AMDGPU ドライバの場合は radeonsi を使ってください。
ノート:
  • インストールされているドライバーは /usr/lib/dri/ ディレクトリを見ることで確認できます。/usr/lib/dri/${LIBVA_DRIVER_NAME}_drv_video.so として使われます。
  • 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。sha1sum /usr/lib/dri/* | sort を実行することで確認できます。
  • LIBVA_DRIVERS_PATH を使うことで VA-API ドライバーのパスを上書きできます。
  • バージョン 12.0.1 から libva-mesa-drivergallium の代わりとして radeonsi を提供しています。

VDPAU の設定

VDPAU_DRIVER 環境変数を使うことで、VDPAU 用に使用するドライバをオーバーライドできます。

適切なドライバ名は、あなたのセットアップに依存します:

  • Intel graphics の場合、va_gl に設定する必要があります
  • オープンソースの AMD ドライバの場合、あなたの GPU に合わせて適切なドライババージョンを設定してください。#確認 を参照。
  • オープンソースの Nouveau ドライバの場合、nouveau に設定してください。
  • NVIDIA のプロプライエタリなバージョンの場合、nvidia に設定してください。
ノート:
  • インストールされているドライバーは /usr/lib/vdpau/ ディレクトリを見ることで確認できます。/usr/lib/vdpau/libvdpau_${VDPAU_DRIVER}.so として使われます。
  • 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。sha1sum /usr/lib/vdpau/* を実行することで確認できます。
  • ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、DRI_PRIME 環境変数を設定する必要があるかもしれません。詳しくは PRIME を参照。

アプリケーションの設定

マルチメディアフレームワーク:

ビデオプレイヤ:

ウェブブラウザ:

マルチメディア録画/ストリーミング:

トラブルシューティング

Failed to open VDPAU backend

適切なドライバを指すように VDPAU_DRIVER 変数を設定する必要があります。#VDPAU の設定 を参照。

VAAPI init failed

エラーは libva: /usr/lib/dri/i965_drv_video.so init failed という行で確認できます。Wayland が正しく認識されていないことが原因で発生します。$DISPLAY の設定を解除することで mpv, MPlayer, VLC などは X11 であると誤認しないようになります。mpv の場合は --gpu-context=wayland パラメータを追加することでも解決できます。

このエラーは、あなたのハードウェアに合わない VA-API ドライバをインストールした場合にも起こりえます。

AMDGPU ドライバーを使用したビデオデコード時の破損や歪み

AMDGPU ドライバーでビデオデコードの破損または歪みが発生する場合は、allow_rgb10_configs=false環境変数 または driconf として設定します。[4]

比較一覧

VA-API ドライバ

コーデック libva-intel-driver [5] intel-media-driver [6] libva-mesa-driver [7] [8] libva-vdpau-driver
(VDPAU アダプタ)
libva-nvidia-driver
(NVDEC アダプタ)
デコード
MPEG-2 GMA 4500 以降 Broadwell 以降 Radeon HD 6000 以降
GeForce 8 以降1
#VDPAU ドライバ を参照 #NVIDIA ドライバのみ を参照
H.263/MPEG-4 Visual4 No No Radeon HD 6000 以降
VC-1 Sandy Bridge 以降 Broadwell 以降 Radeon HD 2000 以降
GeForce 9300 以降1
H.264/MPEG-4 AVC GMA 45002, Ironlake 以降 Radeon HD 2000 以降
GeForce 8 以降1
H.265/HEVC 8bit Cherryview/Braswell 以降 Skylake 以降 Radeon R9 Fury 以降
H.265/HEVC 10bit Broxton 以降 Broxton/Apollo Lake 以降 Radeon 400 以降
VP8 Broadwell 以降 Broadwell 以降 No No
VP9 8bit Broxton 以降
Hybrid: Haswell refresh から Skylake3
Broxton/Apollo Lake 以降 Raven Ridge + Radeon RX 5000 以降 #VDPAU ドライバ を参照5
VP9 10bit & 12bit Kaby Lake 以降 Kaby Lake 以降 No
AV1 8bit & 10bit No Tiger Lake 以降 Radeon RX 6600 以上/以降
エンコード
MPEG-2 Ivy Bridge 以降 Broadwell 以降
Broxton/Apollo Lake を除く
No No6
H.264/MPEG-4 AVC Sandy Bridge 以降 Broadwell 以降 Radeon HD 7000 以降
H.265/HEVC 8bit Skylake 以降 Skylake 以降 Radeon 400 以降
H.265/HEVC 10bit Kaby Lake 以降 Kaby Lake 以降 Raven Ridge + Radeon RX 5000 以降
VP8 Cherryview/Braswell 以降
Hybrid: Haswell から Skylake3
No
VP9 8bit Kaby Lake 以降 Icelake 以降
VP9 10bit & 12bit No
AV1 8bit & 10bit Alchemist 以降 Radeon RX 7900 以上/以降
  • 1 GeForce GTX 750 まで。
  • 2 代わりに libva-intel-driver-g45-h264AUR によってサポートされています。
  • 3 Hybrid VP8 エンコーダと VP9 エンコーダは intel-hybrid-codec-driver-gitAUR によってサポートされています。
  • 4 MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、VAAPI_MPEG4_ENABLED=true 環境変数を設定してください。
  • 5 実験的な VP9 サポートは代わりに libva-vdpau-driver-vp9-gitAUR によって提供されています。
  • 6 NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [9]

VDPAU ドライバ

コーデック 色深度 mesa-vdpau [10] [11] nvidia-utils libvdpau-va-gl
(VA-API アダプタ)
デコード
MPEG-2 8bit Radeon R600 以降
GeForce 8 以降1
GeForce 8 以降 No
H.263/MPEG-4 Visual 8bit Radeon HD 6000 以降
GeForce 200 以降1
GeForce 200 以降
VC-1 8bit Radeon HD 2000 以降
GeForce 9300 以降1
GeForce 8 以降2
H.264/MPEG-4 AVC 8bit Radeon HD 2000 以降
GeForce 8 以降1
GeForce 8 以降 #VA-API ドライバ を参照
H.265/HEVC 8bit Radeon R9 Fury 以降 GeForce 900 以降3 No
10bit Radeon 400 以降 No4
VP9 8bit Raven Ridge + Radeon RX 5000 以降 GeForce 900 以降3
10bit/12bit No4
AV1 8bit Radeon RX 6600 以上/以降 GeForce 30 以降5
10bit No4
  • 1 GeForce GTX 750 まで。
  • 2 GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB) は除く
  • 3 GeForce GTX 970 と GTX 980 は除く。
  • 4 NVIDIA の実装は8ビットストリームまでに制限されています [12] [13]
  • 5 ドライババージョン 510 から [14]

NVIDIA ドライバのみ

コーデック nvidia-utils [15]
NVDEC NVENC
MPEG-2 Fermi 以降1 No
VC-1
H.264/MPEG-4 AVC Kepler 以降2
H.265/HEVC 8bit Maxwell (GM206) 以降 Maxwell (2nd Gen) 以降
H.265/HEVC 10bit Pascal 以降
VP8 Maxwell (2nd Gen) 以降 No
VP9 8bit Maxwell (GM206) 以降
VP9 10bit & 12bit Pascal 以降
AV1 8bit & 10bit Ampere 以降3 Ada Lovelace 以降
  • 1 GM108 は除く (未サポート)
  • 2 GM108 と GP108 は除く (未サポート)
  • 3 A100 は除く (未サポート)

アプリケーションサポート

アプリケーション デコード エンコード ドキュメント
VA-API VDPAU NVDEC VA-API NVENC
FFmpeg Yes Yes Yes Yes Yes FFmpeg#ハードウェアビデオアクセラレーション
GStreamer Yes No Yes Yes Yes GStreamer#ハードウェアアクセラレーション
Kodi Yes Yes No Kodi#ヒントとテクニック
mpv Yes Yes Yes mpv#ハードウェアデコード
VLC media player Yes Yes No VLC media player#ハードウェアアクセラレーションのサポート
MPlayer Yes1 Yes No MPlayer#ハードウェアアクセラレーション
Flash No2 Yes2 No ブラウザプラグイン#Adobe Flash Player
Chromium Yes No No Yes No Chromium#ハードウェアビデオアクセラレーション
Firefox Yes No No No No Firefox#ハードウェアビデオアクセラレーション
GNOME/Web GStreamer ? ? GNOME Web#ビデオ
  • 1 VA-API サポートは代わりに mplayer-vaapiAUR によって提供されています。
  • 2 VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
翻訳ステータス: このページは en:Hardware video acceleration の翻訳バージョンです。最後の翻訳日は 2024-07-23 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。