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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(カテゴリを修正)
 
(他の1人の利用者による、間の18版が非表示)
1行目: 1行目:
[[Category:グラフィック]]
+
[[Category:グラフィック]]
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
 
[[en:Hardware video acceleration]]
 
[[en:Hardware video acceleration]]
 
[[ru:Hardware video acceleration]]
 
[[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 でこれを実現する方法は複数存在します:
10行目: 10行目:
 
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
 
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
 
* [[Wikipedia:VDPAU|Video Decode and Presentation API for Unix]] (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
 
* [[Wikipedia:VDPAU|Video Decode and Presentation API for Unix]] (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
* [https://gpuopen.com/advanced-media-framework/ Advanced Media Framework] (AMF) は、[[AMDGPU PRO]] を使用してマルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。
+
* [https://gpuopen.com/advanced-media-framework/ Advanced Media Framework SDK] (AMF) は、[[AMDGPU PRO]] を使用してマルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。
* [[Wikipedia:Nvidia NVDEC|NVDECODE]]/[[Wikipedia:Nvidia NVENC|NVENCODE]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。
+
* [[Wikipedia:Nvidia NVDEC|NVDEC]]/[[Wikipedia:Nvidia NVENC|NVENC]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。
   
 
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。
 
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。
21行目: 21行目:
 
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:
 
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:
   
* [https://github.com/intel/media-driver/#supported-platforms Broadwell] [[wikipedia:Template:Intel_processor_roadmap|(2014)]] 及びそれ以降の 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}} によってサポートされています。
* ([[wikipedia:Coffee_Lake|Coffee Lake]] (2017) までの HD Graphics を含む) GMA 4500 (2008) 及びそれ以降の 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 デコードのハードウェアアクセラレーション]] を参照。
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{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}} も必要です。
 
* Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。
   
[https://01.org/linuxmedia/vaapi VAAPI がサポートするハードウェアと機能] もご覧ください。
+
[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。
   
 
=== NVIDIA ===
 
=== NVIDIA ===
39行目: 39行目:
   
 
* [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降の GPU における VDPAU
 
* [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降の GPU における VDPAU
* [[Wikipedia:Fermi_(microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDECODE [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf]
+
* [[Wikipedia:Fermi_(microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDEC [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf]
* [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENCODE
+
* [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENC
   
=== ATI/AMD ===
+
=== AMD/ATI ===
   
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています:
+
[[AMD]] と [[ATI]] オープンソースドライバーは VA-API と VDPAU に対応しています:
   
 
* VA-API は Radeon HD 2000 及びそれ以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。
 
* VA-API は Radeon HD 2000 及びそれ以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。
* VDPAU は Radeon R300 及びそれ以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。
+
* VDPAU は Radeon R600 及びそれ以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。
   
 
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。
 
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。
   
* [[Wikipedia:Radeon_Rx_300_series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。
+
* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。
   
 
{{Note|
 
{{Note|
 
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。
 
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。
* [[Wikipedia:High_Efficiency_Video_Coding|HEVC]] エンコードは [[Wikipedia:Radeon_RX_5000_series|Navi]] より古い GPU では利用できない場合があります。
+
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。
 
}}
 
}}
   
=== 換レイヤー ===
+
=== 換レイヤー ===
   
* {{App|libva-vdpau-driver|VA-API のための VDPAU ベースのバックエンド。|https://cgit.freedesktop.org/vaapi/vdpau-driver|{{Pkg|libva-vdpau-driver}}, {{AUR|libva-vdpau-driver-chromium}}, {{AUR|libva-vdpau-driver-vp9-git}}}}
+
* {{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}}}}
 
* {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}}
* {{App|nvidia-vaapi-driver|VA-API のための [[CUDA]] NVDECODE ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{AUR|libva-nvidia-driver}}}}
+
* {{App|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}
   
 
{{Note|
 
{{Note|
Nvidia ドライバの 525 シリーズにはリグレッションがあり、VA-API が機能しなくなります。 [https://github.com/elFarto/nvidia-vaapi-driver/issues/126 nvidia-vaapi-driver#126]
+
* 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}} を使用してください。
 
修正されるまでの間、ドライバをバージョン 520 に[[ダウングレード]]するか、[https://github.com/elFarto/nvidia-vaapi-driver#direct-backend 実験的な direct-backend] を使用することができます。
 
 
}}
 
}}
   
 
== 確認 ==
 
== 確認 ==
  +
  +
設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。
   
 
{{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'}} を実行してください。
 
 
}}
 
}}
   
118行目: 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 の確認 ===
149行目: 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:
166行目: 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]]:
181行目: 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}} を提供しています。
195行目: 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#ハードウェアアクセラレーション]]
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
223行目: 262行目:
 
=== 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]
   
 
== 比較一覧 ==
 
== 比較一覧 ==
235行目: 274行目:
 
! {{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 アダプタ)
 
! {{pkg|libva-vdpau-driver}} <br> (VDPAU アダプタ)
! {{aur|libva-nvidia-driver}}<br> (NVDECODE アダプタ)
+
! {{Pkg|libva-nvidia-driver}}<br> (NVDEC アダプタ)
 
|-
 
|-
 
! colspan=6 | デコード
 
! colspan=6 | デコード
244行目: 283行目:
 
| {{G|Radeon HD 6000 以降<br>GeForce 8 以降<sup>1</sup>}}
 
| {{G|Radeon HD 6000 以降<br>GeForce 8 以降<sup>1</sup>}}
 
| rowspan=6 | [[#VDPAU ドライバ]] を参照
 
| rowspan=6 | [[#VDPAU ドライバ]] を参照
| [[#NVIDIA ドライバのみ]] を参照
+
| rowspan=10 | [[#NVIDIA ドライバのみ]] を参照
 
|-
 
|-
 
! H.263/MPEG-4 Visual<sup>4</sup>
 
! H.263/MPEG-4 Visual<sup>4</sup>
250行目: 289行目:
 
| {{No}}
 
| {{No}}
 
| {{G|Radeon HD 6000 以降}}
 
| {{G|Radeon HD 6000 以降}}
| {{No}}<sup>6</sup>
 
 
|-
 
|-
 
! VC-1
 
! VC-1
256行目: 294行目:
 
| rowspan=2 {{G|Broadwell 以降}}
 
| rowspan=2 {{G|Broadwell 以降}}
 
| {{G|Radeon HD 2000 以降<br>GeForce 9300 以降<sup>1</sup>}}
 
| {{G|Radeon HD 2000 以降<br>GeForce 9300 以降<sup>1</sup>}}
| rowspan=3 | [[#NVIDIA ドライバのみ]] を参照
 
 
|-
 
|-
 
! H.264/MPEG-4 AVC
 
! H.264/MPEG-4 AVC
271行目: 308行目:
 
| {{G|Broxton/Apollo Lake 以降}}
 
| {{G|Broxton/Apollo Lake 以降}}
 
| {{G|Radeon 400 以降}}
 
| {{G|Radeon 400 以降}}
| {{No}}<sup>6</sup>
 
 
|-
 
|-
 
! VP8
 
! VP8
278行目: 314行目:
 
| {{No}}
 
| {{No}}
 
| {{No}}
 
| {{No}}
| rowspan=2 | [[#NVIDIA ドライバのみ]] を参照
 
 
|-
 
|-
 
! VP9 8bit
 
! VP9 8bit
 
| {{G|Broxton 以降 <br> Hybrid: Haswell refresh から 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>
 
| [[#VDPAU ドライバ]] を参照<sup>5</sup>
 
|-
 
|-
! VP9 10bit
+
! VP9 10bit & 12bit
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| rowspan=2 {{No}}
 
| rowspan=2 {{No}}
| {{No}}<sup>6</sup>
 
 
|-
 
|-
! AV1 8-bit & 10-bit
+
! AV1 8bit & 10bit
 
| {{No}}
 
| {{No}}
 
| {{G|Tiger Lake 以降}}
 
| {{G|Tiger Lake 以降}}
| {{G|Radeon RX 6000 以降}}
+
| {{G|Radeon RX 6600 以上/以降}}
| {{Y|実験的}}<sup>7</sup>
 
 
|-
 
|-
 
! colspan=6 | エンコード
 
! colspan=6 | エンコード
304行目: 337行目:
 
| {{G|Broadwell 以降<br>Broxton/Apollo Lake を除く}}
 
| {{G|Broadwell 以降<br>Broxton/Apollo Lake を除く}}
 
| {{No}}
 
| {{No}}
| rowspan=7 {{-}}
+
| rowspan=8 {{-}}
| rowspan=7 {{No}}<sup>6</sup>
+
| rowspan=8 {{No}}<sup>6</sup>
 
|-
 
|-
 
! H.264/MPEG-4 AVC
 
! H.264/MPEG-4 AVC
320行目: 353行目:
 
| {{G|Kaby Lake 以降}}
 
| {{G|Kaby Lake 以降}}
 
| rowspan=2 {{G|Kaby Lake 以降}}
 
| rowspan=2 {{G|Kaby Lake 以降}}
| {{G|Raven Ridge 以降}}
+
| {{G|Raven Ridge + Radeon RX 5000 以降}}
 
|-
 
|-
 
! VP8
 
! VP8
330行目: 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}} によってサポートされています。
+
* <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>4</sup> MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、{{ic|1=VAAPI_MPEG4_ENABLED=true}} [[環境変数]]を設定してください。
 
* <sup>5</sup> 実験的な VP9 サポートは代わりに {{AUR|libva-vdpau-driver-vp9-git}} によって提供されています。
 
* <sup>5</sup> 実験的な VP9 サポートは代わりに {{AUR|libva-vdpau-driver-vp9-git}} によって提供されています。
* <sup>6</sup> NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります。
+
* <sup>6</sup> NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [https://github.com/elFarto/nvidia-vaapi-driver/issues/116]
* <sup>7</sup> 機能することは保証されていません。FireFox 98 以降が必要です [https://github.com/elFarto/nvidia-vaapi-driver/#codec-support]。
 
   
 
=== VDPAU ドライバ ===
 
=== VDPAU ドライバ ===
355行目: 391行目:
 
! MPEG-2
 
! MPEG-2
 
! 8bit
 
! 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=3 {{No}}
 
| rowspan=3 {{No}}
387行目: 423行目:
 
! rowspan=2 | VP9
 
! rowspan=2 | VP9
 
! 8bit
 
! 8bit
  +
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}
| {{No}}
 
 
| {{G|GeForce 900 以降<sup>3</sup>}}
 
| {{G|GeForce 900 以降<sup>3</sup>}}
 
|-
 
|-
! 10bit
+
! 10bit/12bit
| {{No}}
 
 
| {{No}}<sup>4</sup>
 
| {{No}}<sup>4</sup>
 
|-
 
|-
 
! rowspan=2 | AV1
 
! rowspan=2 | AV1
 
! 8bit
 
! 8bit
  +
| rowspan=2 {{G|Radeon RX 6600 以上/以降}}
| {{No}}
 
 
| {{G|GeForce 30 以降}}<sup>5</sup>
 
| {{G|GeForce 30 以降}}<sup>5</sup>
 
|-
 
|-
 
! 10bit
 
! 10bit
| {{No}}
 
 
| {{No}}<sup>4</sup>
 
| {{No}}<sup>4</sup>
 
|}
 
|}
416行目: 450行目:
 
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]
 
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]
 
|-
 
|-
  +
! NVDEC
! NVDECODE
 
  +
! NVENC
! NVENCODE
 
 
|-
 
|-
 
! MPEG-2
 
! MPEG-2
437行目: 471行目:
 
! VP8
 
! VP8
 
| {{G|Maxwell (2nd Gen) 以降}}
 
| {{G|Maxwell (2nd Gen) 以降}}
| rowspan=4 {{No}}
+
| rowspan=3 {{No}}
 
|-
 
|-
 
! VP9 8bit
 
! VP9 8bit
 
| {{G|Maxwell (GM206) 以降}}
 
| {{G|Maxwell (GM206) 以降}}
 
|-
 
|-
! VP9 10bit
+
! VP9 10bit & 12bit
 
| {{G|Pascal 以降}}
 
| {{G|Pascal 以降}}
 
|-
 
|-
 
! AV1 8bit & 10bit
 
! AV1 8bit & 10bit
 
| {{G|Ampere 以降<sup>3</sup>}}
 
| {{G|Ampere 以降<sup>3</sup>}}
  +
| {{G|Ada Lovelace 以降}}
 
|}
 
|}
   
463行目: 498行目:
 
! VA-API
 
! VA-API
 
! VDPAU
 
! VDPAU
  +
! NVDEC
! NVDECODE
 
 
! VA-API
 
! VA-API
  +
! NVENC
! NVENCODE
 
 
|-
 
|-
 
! [[FFmpeg]]
 
! [[FFmpeg]]
473行目: 508行目:
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
| [[FFmpeg#ハードウェアアクセラレーション]]
+
| [[FFmpeg#ハードウェアビデオアクセラレーション]]
 
|-
 
|-
 
! [[GStreamer]]
 
! [[GStreamer]]
| {{Yes}}<sup>1</sup>
+
| {{Yes}}
 
| {{No}}
 
| {{No}}
 
| {{Yes}}
 
| {{Yes}}
| {{Yes}}<sup>1</sup>
+
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| [[GStreamer#ハードウェアアクセラレーション]]
 
| [[GStreamer#ハードウェアアクセラレーション]]
489行目: 524行目:
 
| {{-}}
 
| {{-}}
 
| {{-}}
 
| {{-}}
| [[Kodi#ヒントとテクニック]]
+
| [[Kodi#ヒントとテクニック]]
 
|-
 
|-
 
! [[mpv]]
 
! [[mpv]]
508行目: 543行目:
 
|-
 
|-
 
! [[MPlayer]]
 
! [[MPlayer]]
| {{Yes}}<sup>2</sup>
+
| {{Yes}}<sup>1</sup>
 
| {{Yes}}
 
| {{Yes}}
 
| {{No}}
 
| {{No}}
516行目: 551行目:
 
|-
 
|-
 
! [[Flash]]
 
! [[Flash]]
| {{No}}<sup>3</sup>
+
| {{No}}<sup>2</sup>
| {{Yes}}<sup>3</sup>
+
| {{Yes}}<sup>2</sup>
 
| {{No}}
 
| {{No}}
 
| {{-}}
 
| {{-}}
546行目: 581行目:
 
|}
 
|}
   
  +
* <sup>1</sup> VA-API サポートは代わりに {{AUR|mplayer-vaapi}} によって提供されています。
* <sup>1</sup> GStreamer は VA-API ドライバの[https://blogs.igalia.com/vjaquez/2018/03/28/gstreamer-va-api-troubleshooting/ ホワイトリストを使用します]。ホワイトリストを無視する方法については、[[GStreamer#ドライバのホワイトリストは無視する]] を見てください。
 
  +
* <sup>2</sup> VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
* <sup>2</sup> VA-API サポートは代わりに {{AUR|mplayer-vaapi}} によって提供されています。
 
  +
* <sup>3</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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。