コンテンツにスキップ

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

提供: ArchWiki
削除された内容 追加された内容
比較一覧: 節タイトルの修正
AshMyzk (トーク | 投稿記録)
同期
 
(3人の利用者による、間の40版が非表示)
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。
* [https://www.khronos.org/blog/an-introduction-to-vulkan-video Vulkan Video] は、ハードウェアアクセラレートされたビデオエンコードとデコードをサポートするために開発された [[Vulkan]] グラフィックス API の拡張です。

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


== インストール ==
== インストール ==


=== Intel ===
=== Intel ===

==== VA-API ====


[[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 4500H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコーディング]]を参照
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までVP9コードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。

* Haswell から Skylake までのハイブリッド VP8 エンコードと VP9 デコードは {{AUR|intel-hybrid-codec-driver}} によってサポートされています。
{{Note|Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。}}

[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。

==== Vulkan ====

ANV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-intel}} 経由で Vulkan Video のサポートを提供しています。

{{Note|Vulkan Video を有効化するには、追加の設定が必要です。[[#Vulkan Video の設定]] を参照してください。}}

==== Intel Video Processing Library (Intel VPL) ====

[https://github.com/intel/libvpl Intel VPL] を使用するには、ベースライブラリである {{Pkg|libvpl}} に加えて、以下のランタイム実装のうち少なくとも一つを[[インストール]]してください:

* {{Pkg|vpl-gpu-rt}}: Tiger Lake 及びそれ以降の GPU に対するサポートを提供します
* {{Pkg|intel-media-sdk}} (開発中止): それより古い Intel GPU に対するサポートを提供します


=== NVIDIA ===
=== NVIDIA ===
28行目: 49行目:
[[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|mesa}} によってサポートされています。
* 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
* [[Wikipedia:Pascal_(microarchitecture)|Pascal]] 及びそれ以降の GPU における Vulkan Video [https://developer.nvidia.com/vulkan/video/get-started]


=== ATI/AMD ===
=== AMD/ATI ===


[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています:
[[AMD]] と [[ATI]] オープンソースドライバーは {{Pkg|mesa}} によって VA-API と VDPAU をサポートしています:


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


RADV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-radeon}} 経由で Vulkan Video サポートを提供しています。
[[AMD Catalyst]] プロプライエタリドライバーは [[AMD Catalyst#ビデオアクセラレーション|XvBA]] によって VA-API に対応しています。


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


* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。
=== 互換レイヤー ===


{{Note|
デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには:
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。
}}


=== 変換レイヤー ===
* {{Pkg|libva-vdpau-driver}} – VDPAU の VA-API バックエンド。
* {{AUR|libva-vdpau-driver-chromium}} – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。


* {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}}
デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには:
* {{App|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}


{{Note|{{Pkg|libva-nvidia-driver}} 実装によってハードウェアビデオデコードを使えるようにはなりますが、NVIDIA の電源管理に対する現状の制限により、[https://github.com/elFarto/nvidia-vaapi-driver/issues/74 CPU によるビデオデコードよりも多くの電力を消費します]。}}
* {{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 のビデオデコーダ/エンコーダが使用されていることを示します。([[インテルグラフィックス#試験的な新しい Xe ドライバをテストする|新しい Xe ドライバ]]を使用している場合、{{ic|intel_gpu_top}} が[https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/174 エラーを出します]。確認するには {{ic|gputop}} を実行してみてください。[https://dri.freedesktop.org/docs/drm/gpu/i915.html#intel-gpu-basics vcs (Video Command Streamer) の値]が 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行目: 131行目:
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行目: 164行目:
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行目: 181行目:
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>}}


=== Vulkan Video の確認 ===
..</nowiki>}}

{{pkg|vulkan-tools}} をインストールし、''vulkaninfo'' を使ってビデオ処理拡張が利用可能であるかを確認してください:

{{hc|$ vulkaninfo {{!}} grep VK_KHR_video_|<nowiki>
VK_KHR_video_decode_av1 : extension revision 1
VK_KHR_video_decode_h264 : extension revision 9
VK_KHR_video_decode_h265 : extension revision 8
VK_KHR_video_decode_queue : extension revision 8
VK_KHR_video_encode_h264 : extension revision 14
VK_KHR_video_encode_h265 : extension revision 14
VK_KHR_video_encode_queue : extension revision 12
VK_KHR_video_maintenance1 : extension revision 1
VK_KHR_video_queue : extension revision 8
</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 用に使用するドライバをオバーライドできます:


* [[Intel Graphics]]:
* [[Intel Graphics]]:
169行目: 226行目:
* NVIDIA:
* NVIDIA:
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。
** [[NVIDIA]] の場合は {{ic|vdpau}} を使ってください。
** [[NVIDIA]] NVDEC の場合は {{ic|nvidia}} を使ってください。
* ATI/AMD:
* AMD:
** [[AMDGPU]] の場合は {{ic|radeonsi}} を使ってください。
** [[AMDGPU]] ドライバの場合は {{ic|radeonsi}} を使ってください。
** [[AMD Catalyst]] の場合は {{ic|fglrx}} を使ってください。


{{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 から Mesa は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。
}}
}}


=== 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 ドライバの場合、{{ic|radeonsi}} に設定してください。
* オープンソースの 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]] を参照。
}}

=== Vulkan Video の設定 ===

* [[インテルグラフィックス]]: {{Pkg|vulkan-intel}} の Vulkan Video サポートは {{ic|1=ANV_DEBUG=video-decode,video-encode}} [[環境変数]]で有効化できます。
* [[AMD]]: {{Pkg|vulkan-radeon}} の Vulkan Video サポートは、Mesa 25 以降、VCN 2、3、4+ ではデフォルトで有効化されています。それより古いカードでサポートを強制的に有効化するには、{{ic|RADV_PERFTEST}} [[環境変数]]に {{ic|video_decode,video_encode}} を設定してください。

=== アプリケーションの設定 ===

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

* [[FFmpeg#ハードウェアビデオアクセラレーション]]
* [[GStreamer#ハードウェアアクセラレーション]]

ビデオプレイヤ:

* [[Kodi#ヒントとテクニック]]
* [[MPlayer#ハードウェアアクセラレーション]]
* [[mpv#ハードウェアデコード]]
* [[VLC media player#ハードウェアアクセラレーションのサポート]]

ウェブブラウザ:

* [[Chromium#ハードウェアビデオアクセラレーション]]
* [[Firefox#ハードウェアビデオアクセラレーション]]
* [[GNOME Web#ハードウェアアクセラレーション]]

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

* [[Open Broadcaster Software#ハードウェアアクセラレーション]]


== トラブルシューティング ==
== トラブルシューティング ==
201行目: 287行目:
=== 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}} [[環境変数]]設定してください。[https://bugs.freedesktop.org/show_bug.cgi?id=106490]


== 比較一覧 ==
== 比較一覧 ==
221行目: 307行目:
! {{pkg|libva-intel-driver}} [https://github.com/01org/intel-vaapi-driver/blob/master/README]
! {{pkg|libva-intel-driver}} [https://github.com/01org/intel-vaapi-driver/blob/master/README]
! {{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|mesa}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
! {{Pkg|libva-nvidia-driver}}<br> (NVDEC アダプタ)
! [[AMD Catalyst#ビデオアクセラレーション|Catalyst XvBA]]
! {{pkg|libva-vdpau-driver}}
(VDPAU アダプタ)
|-
|-
! colspan=6 | デコード
! colspan=5 | デコード
|-
|-
! 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=10 | [[#NVIDIA ドライバのみ]] を参照
| {{G|Radeon HD 4000 以降}}
| rowspan=6 | [[#VDPAU]] を参照
|-
|-
! H.263/MPEG-4 Visual<sup>3</sup>
! MPEG4
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{G|Radeon HD 6000 以降}}
| {{G|Radeon HD 6000 以降}}
| {{G|Radeon HD 6000 以降}}
|-
|-
! VC-1
! AVC (H.264)
| {{G|GMA 4500<sup>2</sup>, Ironlake 以降}}
| {{G|Sandy Bridge 以降}}
| {{G|Broadwell 以降}}
| rowspan=2 {{G|Broadwell 以降}}
| {{G|Radeon HD 2000 以降<br>GeForce 9300 以降<sup>1</sup>}}
|-
! H.264/MPEG-4 AVC
| {{G|Ironlake 以降}}
| {{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}}
| rowspan=3 {{No}}
|-
|-
! VP9 8bit
! VP9 8bit
| {{G|Broxton 以降 <br> Hybrid: Haswell から Skylake<sup>3</sup>}}
| {{G|Broxton 以降 <br> Hybrid: Haswell refresh から Skylake<sup>2</sup>}}
| {{G|Broxton/Apollo Lake 以降}}
| {{G|Broxton/Apollo Lake 以降}}
| rowspan=2 {{G|Raven Ridge 以降}}
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}
|-
|-
! VP9 10bit
! VP9 10bit & 12bit
| {{G|Kaby Lake 以降}}
| {{G|Kaby Lake 以降}}
| {{G|Kaby Lake 以降}}
| {{G|Kaby Lake 以降}}
|-
|-
! AV1 8bit & 10bit
! colspan=6 | エンコード
| {{No}}
| {{G|Tiger Lake 以降}}
| {{G|Radeon RX 6600 以上/以降}}
|-
|-
! colspan=5 | エンコード
! 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 {{No}}<sup>4</sup>
| rowspan=7 {{No}}
|-
|-
! 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
| {{G|Cherryview/Braswell 以降 <br> Hybrid: Haswell から Skylake<sup>3</sup>}}
| {{G|Cherryview/Braswell 以降 <br> Hybrid: Haswell から Skylake<sup>2</sup>}}
| rowspan=3 {{No}}
| rowspan=3 {{No}}
|-
|-
! VP9 8bit
! VP9 8bit
| {{G|Kaby Lake 以降}}
| {{G|Kaby Lake 以降}}
| rowspan=2 {{G|Icelake 以降}}
| rowspan=2 {{G|Ice Lake 以降}}
|-
|-
! VP9 10bit
! VP9 10bit & 12bit
| {{No}}
| rowspan=2 {{No}}
|-
! AV1 8bit & 10bit
| {{G|Alchemist 以降}}
| {{G|Radeon RX 7900 以上/以降}}
|}
|}


* <sup>1</sup> GeForce GTX 750 まで対応
# GeForce GTX 750 まで。
* <sup>2</sup> {{aur|libva-intel-driver-g45-h264}} パッケージによってサポートされています。
# Hybrid VP8 エンコーダと VP9 デコーダは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。
# MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、{{ic|1=VAAPI_MPEG4_ENABLED=true}} [[環境変数]]を設定してください。
* <sup>3</sup> Hybrid VP8 エンコーダ・VP9 デコーダは {{AUR|intel-hybrid-codec-driver}} によってサポートされています [https://github.com/01org/intel-hybrid-driver/blob/master/README]。
# 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|nvidia-utils}} [https://www.nvidia.com/page/purevideo_support.html]
! {{pkg|mesa}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
! {{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 まで対応
# GeForce GTX 750 まで。
* <sup>2</sup> GeForce GTX 970 と GTX 980 は除く。
# GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB)[[Wikipedia:Nvidia PureVideo|除く]]
# 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]。
# 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|除く]]。
# ドライババージョン 510 から [https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-510-Linux-Beta]


=== NVIDIA ドライバのみ ===
=== NVIDIA ドライバのみ ===
367行目: 475行目:
{| 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 以降}}
|-
|-
395行目: 503行目:
| {{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 は除く (未サポート)
# GM108 は除く (未サポート)
* <sup>2</sup> GM108 と GP108 は除く (未サポート)
# GM108 と GP108 は除く (未サポート)
# A100 は除く (未サポート)


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


{| class="wikitable"
{| class="wikitable"
! rowspan=2 | アプリケーション
!
! colspan=4 | デコード
! colspan=3 | エンコード
! rowspan=2 | ドキュメント
|-
! VA-API
! VA-API
! VDPAU
! VDPAU
! NVDEC
! NVDECODE
! Vulkan
! ドキュメント
! VA-API
! NVENC
! Vulkan
|-
|-
! [[FFmpeg]]
! [[FFmpeg]]
415行目: 535行目:
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| [[FFmpeg#ハードウェアアクセラレーション]]
| {{Yes}}
| {{Yes}}
| {{Yes}}
| [[FFmpeg#ハードウェアビデオアクセラレーション]]
|-
|-
! [[GStreamer]]
! [[GStreamer]]
| {{Yes}} ({{pkg|gstreamer-vaapi}})
| {{Yes}}
| {{No}}
| {{Yes}} ({{pkg|gst-plugins-bad}})
| {{Yes}} ({{pkg|gst-plugins-bad}})
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{No|1=https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197}}
| [[GStreamer#ハードウェアアクセラレーション]]
| [[GStreamer#ハードウェアアクセラレーション]]
|-
|-
426行目: 554行目:
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| [[Kodi#ヒントとテクニック‎]]
| {{-}}
| {{-}}
| {{-}}
| [[Kodi#ヒントとテクニック]]
|-
|-
! [[mpv]]
! [[mpv]]
433行目: 565行目:
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{-}}
| {{-}}
| {{-}}
| [[mpv#ハードウェアデコード]]
| [[mpv#ハードウェアデコード]]
|-
|-
439行目: 575行目:
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| {{No|1=https://code.videolan.org/videolan/vlc/-/issues/28362}}
| {{-}}
| {{-}}
| {{-}}
| [[VLC media player#ハードウェアアクセラレーションのサポート]]
| [[VLC media player#ハードウェアアクセラレーションのサポート]]
|-
|-
! [[MPlayer]]
! [[MPlayer]]
| {{Y|{{AUR|mplayer-vaapi}}}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{-}}
| {{-}}
| {{-}}
| [[MPlayer#ハードウェアアクセラレーション]]
| [[MPlayer#ハードウェアアクセラレーション]]
|-
|-
! [[Flash]]
! [[Flash]]
| {{No}}<sup>1</sup>
| {{Y|NPAPI のみ: <br> {{AUR|freshplayerplugin}}}}
| {{Yes}}<sup>1</sup>
| {{Y|NPAPI のみ: <br> {{Pkg|flashplugin}} または <br> {{AUR|freshplayerplugin}}}}
| {{No}}
| {{No}}
| {{No}}
| {{-}}
| {{-}}
| {{-}}
| [[ブラウザプラグイン#Adobe Flash Player]]
| [[ブラウザプラグイン#Adobe Flash Player]]
|-
|-
! [[Chromium]]
! [[Chromium]]
| {{Yes}}
| {{Y|{{AUR|chromium-vaapi}}}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| [[Chromium#設定]]
| [[Chromium#ハードウェアビデオアクセラレーション]]
|-
|-
! [[Firefox]]
! [[Firefox]]
463行目: 615行目:
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| [https://bugzilla.mozilla.org/show_bug.cgi?id=1210726 バグレポート]
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1753129}}
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1658900}}
| {{No}}
| {{No}}
| [[Firefox#ハードウェアビデオアクセラレーション]]
|-
! [[GNOME/Web]]
| colspan=4 {{C|GStreamer}}
| {{C|?}}
| {{C|?}}
| {{C|?}}
| [[GNOME Web#ビデオ]]
|}
|}


# VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
{{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])。}}

{{TranslationStatus|Hardware video acceleration|2025-06-29|838872}}

2025年6月29日 (日) 13:55時点における最新版

ハードウェアビデオアクセラレーションにより、ビデオカードで動画をデコード/エンコードすることができ、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。
  • Vulkan Video は、ハードウェアアクセラレートされたビデオエンコードとデコードをサポートするために開発された Vulkan グラフィックス API の拡張です。

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

インストール

Intel

VA-API

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

ノート Skylake 及びそれ以降は linux-firmware も必要です。

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

Vulkan

ANV オープンソース vulkan ドライバは、vulkan-intel 経由で Vulkan Video のサポートを提供しています。

ノート Vulkan Video を有効化するには、追加の設定が必要です。#Vulkan Video の設定 を参照してください。

Intel Video Processing Library (Intel VPL)

Intel VPL を使用するには、ベースライブラリである libvpl に加えて、以下のランタイム実装のうち少なくとも一つをインストールしてください:

  • vpl-gpu-rt: Tiger Lake 及びそれ以降の GPU に対するサポートを提供します
  • intel-media-sdk (開発中止): それより古い Intel GPU に対するサポートを提供します

NVIDIA

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

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

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

  • GeForce 8 シリーズ及びそれ以降の GPU における VDPAU
  • Fermi 及びそれ以降の GPU における NVDEC [1]
  • Kepler 及びそれ以降の GPU における NVENC
  • Pascal 及びそれ以降の GPU における Vulkan Video [2]

AMD/ATI

AMDATI オープンソースドライバーは mesa によって VA-API と VDPAU をサポートしています:

  • VA-API は Radeon HD 2000 及びそれ以降の GPU。
  • VDPAU は Radeon R600 及びそれ以降の GPU。

RADV オープンソース vulkan ドライバは、vulkan-radeon 経由で Vulkan Video サポートを提供しています。

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

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

変換レイヤー

  • 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
ノート libva-nvidia-driver 実装によってハードウェアビデオデコードを使えるようにはなりますが、NVIDIA の電源管理に対する現状の制限により、CPU によるビデオデコードよりも多くの電力を消費します

確認

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

ヒント
  • コマンドラインサポートのある mpv は、ハードウェアアクセラレーションをテストするのにぴったりです。mpv --hwdec=auto video_filename のログを見てください。詳細は hwdec を参照。
  • AMD、Intel、そして NVIDIA の場合、動画を再生しながら nvtop を使うことで "DEC" (デコーダ) の使用率を確認できます。
  • Intel GPU の場合、intel-gpu-tools を使って、intel_gpu_top を root として実行することで、ビデオプレイバック中に GPU 使用率をモニタできます。ビデオバーが 0% よりも上にあれば、GPU のビデオデコーダ/エンコーダが使用されていることを示します。(新しい Xe ドライバを使用している場合、intel_gpu_topエラーを出します。確認するには gputop を実行してみてください。vcs (Video Command Streamer) の値が 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
...

Vulkan Video の確認

vulkan-tools をインストールし、vulkaninfo を使ってビデオ処理拡張が利用可能であるかを確認してください:

$ vulkaninfo | grep VK_KHR_video_
	VK_KHR_video_decode_av1                       : extension revision 1
	VK_KHR_video_decode_h264                      : extension revision 9
	VK_KHR_video_decode_h265                      : extension revision 8
	VK_KHR_video_decode_queue                     : extension revision 8
	VK_KHR_video_encode_h264                      : extension revision 14
	VK_KHR_video_encode_h265                      : extension revision 14
	VK_KHR_video_encode_queue                     : extension revision 12
	VK_KHR_video_maintenance1                     : extension revision 1
	VK_KHR_video_queue                            : extension revision 8

設定

ビデオドライバは 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 用に使用するドライバをオーバーライドできます:

ノート
  • インストールされているドライバーは /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 から Mesa は gallium の代わりとして radeonsi を提供しています。

VDPAU の設定

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

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

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

Vulkan Video の設定

  • インテルグラフィックス: vulkan-intel の Vulkan Video サポートは ANV_DEBUG=video-decode,video-encode 環境変数で有効化できます。
  • AMD: vulkan-radeon の Vulkan Video サポートは、Mesa 25 以降、VCN 2、3、4+ ではデフォルトで有効化されています。それより古いカードでサポートを強制的に有効化するには、RADV_PERFTEST 環境変数video_decode,video_encode を設定してください。

アプリケーションの設定

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

ビデオプレイヤ:

ウェブブラウザ:

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

トラブルシューティング

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 環境変数を設定してください。[4]

比較一覧

VA-API ドライバ

コーデック libva-intel-driver [5] intel-media-driver [6] mesa [7] [8] libva-nvidia-driver
(NVDEC アダプタ)
デコード
MPEG-2 GMA 4500 以降 Broadwell 以降 Radeon HD 6000 以降
GeForce 8 以降1
#NVIDIA ドライバのみ を参照
H.263/MPEG-4 Visual3 No No Radeon HD 6000 以降
VC-1 Sandy Bridge 以降 Broadwell 以降 Radeon HD 2000 以降
GeForce 9300 以降1
H.264/MPEG-4 AVC 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
VP9 8bit Broxton 以降
Hybrid: Haswell refresh から Skylake2
Broxton/Apollo Lake 以降 Raven Ridge + Radeon RX 5000 以降
VP9 10bit & 12bit Kaby Lake 以降 Kaby Lake 以降
AV1 8bit & 10bit No Tiger Lake 以降 Radeon RX 6600 以上/以降
エンコード
MPEG-2 Ivy Bridge 以降 Broadwell 以降
Broxton/Apollo Lake を除く
No No4
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 から Skylake2
No
VP9 8bit Kaby Lake 以降 Ice Lake 以降
VP9 10bit & 12bit No
AV1 8bit & 10bit Alchemist 以降 Radeon RX 7900 以上/以降
  1. GeForce GTX 750 まで。
  2. Hybrid VP8 エンコーダと VP9 デコーダは intel-hybrid-codec-driver-gitAUR によってサポートされています。
  3. MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、VAAPI_MPEG4_ENABLED=true 環境変数を設定してください。
  4. NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [9]

VDPAU ドライバ

コーデック 色深度 mesa [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 Vulkan VA-API NVENC Vulkan
FFmpeg Yes Yes Yes Yes Yes Yes Yes FFmpeg#ハードウェアビデオアクセラレーション
GStreamer Yes No Yes Yes Yes Yes No GStreamer#ハードウェアアクセラレーション
Kodi Yes Yes No No Kodi#ヒントとテクニック
mpv Yes Yes Yes Yes mpv#ハードウェアデコード
VLC media player Yes Yes No No VLC media player#ハードウェアアクセラレーションのサポート
MPlayer No Yes No No MPlayer#ハードウェアアクセラレーション
Flash No1 Yes1 No No ブラウザプラグイン#Adobe Flash Player
Chromium Yes No No No Yes No No Chromium#ハードウェアビデオアクセラレーション
Firefox Yes No No No No No No Firefox#ハードウェアビデオアクセラレーション
GNOME/Web GStreamer ? ? ? GNOME Web#ビデオ
  1. VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
翻訳ステータス: このページは en:Hardware video acceleration の翻訳バージョンです。最後の翻訳日は 2025-06-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。