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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
 
(5人の利用者による、間の47版が非表示)
2行目: 2行目:
 
[[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:Graphics processing unit#GPU accelerated video decoding and encoding|ハードウェアビデオアクセラレーション]]により、ビデオカードで動画をデコード/エンコードすることができ、CPU の負担を下げて電力を節約することができます。
{{Related articles start}}
 
{{Related|XvMC}}
 
{{Related articles end}}
 
ビデオカードで動画をデコード・エンコードするハードウェアビデオアクセラレーションを活用することで、CPU の負担を下げて電力を節約することができます。
 
   
Linux でハードウェアアクセラレーション利用する方法は複数存在します:
+
Linux でこれ実現する方法は複数存在します:
* '''[http://www.freedesktop.org/wiki/Software/vaapi Video Acceleration API]''' (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現するオープンソースライブラリです。Intel によって開発されました。
 
* '''[http://http.download.nvidia.com/XFree86/vdpau/doxygen/html/ Video Decode and Presentation API for Unix]''' (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
 
* X-Video Motion Compensation ([[XvMC]]) は動画のデコード処理を動画プログラムから GPU ビデオハードウェアにオフロードできる X.Org サーバーの拡張です。
 
   
  +
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
== 対応状況 ==
 
  +
* [[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 によって開発されました。
  +
* [[Wikipedia:Nvidia NVDEC|NVDEC]]/[[Wikipedia:Nvidia NVENC|NVENC]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。
   
  +
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。
=== フォーマット ===
 
   
  +
== インストール ==
{{note|ドライバーの選択については[[#インストール|インストール]]を見てください。}}
 
   
  +
=== Intel ===
{| class="wikitable" style="width: 100%"
 
|+ VA-API
 
!
 
! {{pkg|libva-intel-driver}} [https://github.com/01org/intel-vaapi-driver/blob/master/README]
 
! {{pkg|libva-mesa-driver}}
 
! {{pkg|libva-vdpau-driver}}
 
! [[AMD Catalyst#ビデオアクセラレーション|Catalyst XvBA]]
 
|-
 
! colspan=5 | デコード
 
|-
 
! MPEG2
 
| GMA 4500 以降
 
| <center>?</center>
 
| rowspan=7 | <center>VDPAU を参照。</center>
 
| Radeon HD 4000 以降
 
|-
 
! MPEG4
 
| <center>✗</center>
 
| <center>?</center>
 
| Radeon HD 6000 以降
 
|-
 
! H.264
 
| GMA 4500<sup>1</sup>, Ironlake Graphics 以降
 
| <center>?</center>
 
| Radeon HD 4000 以降
 
|-
 
! HEVC (H.265)
 
| Cherryview/Braswell 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
! VC1
 
| Sandy Bridge Graphics 以降
 
| <center>?</center>
 
| Radeon HD 4000 以降
 
|-
 
! VP8
 
| Broadwell 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
! VP9
 
| Broxton 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
! colspan=5 | エンコード
 
|-
 
! MPEG2
 
| Ivy Bridge Graphics 以降
 
| <center>?</center>
 
| rowspan=5 | <center>✗</center>
 
| <center>✗</center>
 
|-
 
! H.264
 
| Sandy Bridge Graphics 以降
 
| <center>?</center>
 
| <center>✗</center>
 
|-
 
! HEVC (H.265)
 
| Skylake 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
! VP8
 
| Cherryview/Braswell 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
! VP9
 
| Kaby Lake 以降
 
| <center>?</center>
 
| <center>?</center>
 
|-
 
|}
 
   
  +
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:
{| class="wikitable" style="width: 100%"
 
|+ VDPAU
 
!
 
! {{pkg|mesa-vdpau}}
 
! {{pkg|libvdpau-va-gl}}
 
! {{aur|amdgpu-pro-vdpau}}
 
! {{pkg|nvidia-utils}}
 
|-
 
|-
 
! colspan=5 | デコード
 
|-
 
! MPEG2
 
| Radeon 9500 以降, GeForce 8 以降
 
| rowspan=2 | <center>✗<sup>2</sup></center>
 
| <center>?</center>
 
| GeForce 8 以降
 
|-
 
! MPEG4
 
| Radeon HD 6000 以降, GeForce 200 以降
 
| <center>?</center>
 
| GeForce 200 以降
 
|-
 
! H.264
 
| Radeon HD 4000 以降, GeForce 8 以降
 
| <center>VA-API を参照。</center>
 
| <center>?</center>
 
| GeForce 8 and newer
 
|-
 
! HEVC (H.265)
 
| <center>✗</center>
 
| rowspan=2 | <center>✗<sup>2</sup></center>
 
| <center>?</center>
 
| GeForce 900<sup>4</sup> 以降
 
|-
 
! VC1
 
| Radeon HD 4000 以降, GeForce 8<sup>3</sup> 以降
 
| <center>?</center>
 
| GeForce 8<sup>3</sup> 以降
 
|-
 
|}
 
   
* <sup>1</sup> {{aur|libva-intel-driver-g45-h264}} パッケージによってサポートされています。
+
* [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) までの GMA 4500 (2008) は {{Pkg|libva-intel-driver}} によってサポートされています。
* <sup>2</sup> バージョン 0.3 現在、VA GL ドライバーは H.264 以外のハードウェアデコーダをサポートしていません。
 
  +
* GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel Graphics#GMA 4500 での H.264 デコードのハードウェアアクセラレーション]] を参照。
* <sup>3</sup> GeForce 8800 Ultra, 8800 GTX, 8800 GTS (320/640 MB) は[[Wikipedia:Nvidia PureVideo|除外]]。
 
  +
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。
* <sup>4</sup> GeForce GTX 970 と GTX 980 は除外。
 
  +
* Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。
   
  +
[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。
あなたの GPU でどのプロファイルがサポートされているか知る方法は[[#確認|確認]]を見てください。
 
   
  +
=== NVIDIA ===
{{aur|amdgpu-pro-vdpau}} パッケージについては [[AMDGPU#AMDGPU PRO]] を見てください。
 
   
  +
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています:
=== ソフトウェア ===
 
   
  +
* GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。
{| class="wikitable" style="width: 100%"
 
  +
* (現在 NVIDIA のバイナリドライバーから抽出される) {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。
!
 
! VA-API
 
! VDPAU
 
|-
 
! [[GStreamer]]
 
| ✓ ({{pkg|gstreamer-vaapi}} を使用、[[GStreamer#ハードウェアアクセラレーション]]を参照)
 
| ✓ ({{pkg|gst-plugins-bad}} を使用、[[GStreamer#ハードウェアアクセラレーション]]を参照)
 
|-
 
! [[VLC media player]]
 
| ✓ ([[VLC media player#ハードウェアアクセラレーションのサポート]]を参照)
 
| ✓ ([[VLC media player#ハードウェアアクセラレーションのサポート]]を参照)
 
|-
 
! [[mpv]]
 
| ✓ ([[mpv#ハードウェアデコード]]を参照)
 
| ✓ ([[mpv#ハードウェアデコード]]を参照)
 
|-
 
! [[MPlayer]]
 
| ✓ ({{aur|mplayer-vaapi}} を使用、[[MPlayer#VA-API を有効にする]]を参照)
 
| ✓ ([[MPlayer#VDPAU を有効にする]]を参照)
 
|-
 
! [[Flash]]
 
| ✓ ({{pkg|libvdpau-va-gl}} を使用、[[Flash#設定]]を参照)
 
| ✓ ([[Flash#設定]]を参照)
 
|-
 
! [[Kodi]]
 
| ✓
 
| ✓
 
|-
 
! [[Firefox]]
 
| colspan=2 | ✗ [https://bugzilla.mozilla.org/show_bug.cgi?id=1210726] [https://bugzilla.mozilla.org/show_bug.cgi?id=1210727] [https://bugzilla.mozilla.org/show_bug.cgi?id=563206]
 
|}
 
   
  +
[[NVIDIA]] プロプライエタリドライバは {{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]
  +
* [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENC
   
  +
=== AMD/ATI ===
* Intel Graphics の場合は VA-API を使用してください。
 
* NVIDIA 製のカードの場合は VDPAU を使用してください。
 
* AMD 製のカードの場合は両方とも使うことができます ({{Pkg|mesa}} を使用)。
 
   
VA-API と VDPAU それぞれに対して以下のドライバーも存在します:
+
[[AMD]] と [[ATI]] オープンソースドライバーは VA-API と VDPAU に対してます:
* {{pkg|libva-vdpau-driver}} は VDPAU を VA-API のバックエンドとして使用します。
 
* {{pkg|libvdpau-va-gl}} は VA-API を VDPAU のバックエンドとして使用します。
 
   
  +
* VA-API は Radeon HD 2000 及びそれ以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。
2007年以前のカードについては [[XvMC]] を参照してください。
 
  +
* VDPAU は Radeon R600 及びそれ以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。
   
  +
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。
{{Tip|様々な状況に対応するために VA-API と VDPAU の両方をインストール・設定することを推奨します。例えば [[Flash]] は VA-API をサポートしていませんが VDPAU の VA-API バックエンドを使用することができます。}}
 
   
  +
* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。
=== VA-API のインストール ===
 
   
  +
{{Note|
'''オープンソースドライバー''':
 
  +
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。
  +
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。
  +
}}
   
  +
=== 変換レイヤー ===
* [[ATI]]/[[AMDGPU]] Radeon 9500 以降の GPU が {{pkg|libva-mesa-driver}} と {{pkg|mesa}}、または {{pkg|libva-vdpau-driver}} によってサポートされます ([[#VDPAU のインストール|VDPAU のインストール]]を参照)。
 
* [[Intel]] GMA 4500 シリーズ以降の GPU が {{pkg|libva-intel-driver}} と {{pkg|mesa}} によってサポートされます。
 
** GMA 4500 でより良いサポートを得るには {{aur|libva-intel-driver-g45-h264}} を使ってください。詳しくは [[Intel#GMA 4500 での H.264 デコーディング]]を参照。
 
* [[Nouveau|NVIDIA]] GeForce 8 シリーズ以降の GPU が {{pkg|libva-vdpau-driver}} によってサポートされます ([[#VDPAU のインストール|VDPAU のインストール]]を参照)。
 
   
  +
* {{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|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}
   
  +
{{Note|
* AMD 製カードはドライバーによって異なります:
 
  +
* 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] を使用することができます。
** [[AMD Catalyst]] は [[AMD Catalyst#ビデオアクセラレーション|xvba]] を使用します。
 
  +
* {{Pkg|libva-vdpau-driver}} のコードは数年間、変更されていません。最近のバージョンの NVIDIA ドライバで VLC や OBS を使用するとクラッシュします。[https://github.com/obsproject/obs-studio/issues/8056] NVIDIA 用の変換レイヤーが必要である場合は、代わりに {{Pkg|libva-nvidia-driver}} を使用してください。
** [[AMDGPU PRO]] は {{pkg|libva-vdpau-driver}} と {{AUR|amdgpu-pro-vdpau}} を使用します ([[AMDGPU#AMDGPU PRO]] を参照)。
 
  +
}}
* [[NVIDIA]] GeForce 8 シリーズ以降の GPU が {{pkg|libva-vdpau-driver}} によってサポートされます ([[#VDPAU のインストール|VDPAU のインストール]]を参照)。
 
   
  +
== 確認 ==
=== VDPAU のインストール ===
 
   
  +
設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。
'''オープンソースドライバー''':
 
 
* [[ATI]]/[[AMDGPU]] Radeon 9500 以降の GPU が {{pkg|mesa-vdpau}} によってサポートされます。
 
* [[Intel]] GMA 4500 シリーズ以降の GPU が {{pkg|libvdpau-va-gl}} によってサポートされます ([[#VA-API のインストール|VA-API のインストール]]を参照)。
 
* [[Nouveau|NVIDIA]] GeForce 8 シリーズ以降の GPU が {{pkg|mesa-vdpau}} によってサポートされます。NVIDIA のバイナリドライバーから抽出したファームウェアが含まれている {{AUR|nouveau-fw}} が必要です [http://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware]。
 
 
'''プロプライエタリドライバー''':
 
 
* AMD 製カードはドライバーによって異なります:
 
** [[AMD Catalyst]] は {{pkg|libvdpau-va-gl}} を使用します ([[#VA-API のインストール|VA-API のインストール]]を参照)。
 
** [[AMDGPU PRO]] は {{AUR|amdgpu-pro-vdpau}} を使用します ([[AMDGPU#AMDGPU PRO]] を参照)。
 
* [[NVIDIA]] GeForce 400 シリーズ以降の GPU が {{pkg|nvidia-utils}} によってサポートされます。
 
** GeForce 8/9 や GeForce 100-300 シリーズの GPU は {{pkg|nvidia-340xx-utils}} によってサポートされています。
 
 
== 確認 ==
 
   
 
{{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|$ <nowiki>grep -iE 'vdpau|dri driver' ~/.local/share/xorg/Xorg.0.log</nowiki>|
 
  +
* 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}} が使えます。
 
 
}}
 
}}
   
276行目: 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>}}
}}
 
   
あなたのカードを使ってデコードできるフォーマットが ''VAEntrypointVLD'' で、エンコードできるフォーマットが ''VAEntrypointEncSlice'' で示されます。
+
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。
   
 
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:
 
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:
  +
{{bc|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 の確認 ===
298行目: 140行目:
 
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:
 
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:
   
{{hc|<nowiki>$ vdpauinfo</nowiki>|<nowiki>
+
{{hc|$ vdpauinfo|<nowiki>
 
display: :0 screen: 0
 
display: :0 screen: 0
 
API version: 1
 
API version: 1
307行目: 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:
324行目: 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 のドライバーは自動で認識されま [http://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 の場合 {{ic|i965}} に設定してください。
+
* [[Intel Graphics]]:
* NVIDIA 製のカードの場合 {{ic|vdpau}} に設定してください。
+
** {{Pkg|libva-intel-driver}} の場合 {{ic|i965}} を使ってください。
* AMD 製のカードの場合 {{ic|radeonsi}} または {{ic|vdpau}} に設定してください。
+
** {{Pkg|intel-media-driver}} の場合は {{ic|iHD}} を使ってください。
  +
* NVIDIA:
  +
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。
  +
** [[NVIDIA]] VDPAU の場合は {{ic|vdpau}} を使ってください。
  +
** [[NVIDIA]] NVDEC の場合は {{ic|nvidia}} を使ってください。
  +
* AMD:
  +
** [[AMDGPU]] ドライバの場合は {{ic|radeonsi}} を使ってください。
   
 
{{Note|
 
{{Note|
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/'''${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 ドライバーのパスを上書きできます。
 
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。
 
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。
 
}}
 
}}
346行目: 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 にわせて適切なドライバージョンを設定してください。[[#確認]] を参照。
* NVIDIA のプロプライエタリドライバの場合{{ic|nvidia}} に設定してください。
+
* オープンソースの Nouveau ドライバの場合{{ic|nouveau}} に設定してください。
  +
* 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#ハードウェアアクセラレーション]]
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
363行目: 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 の設定]] 参照
  +
  +
=== VAAPI init failed ===
  +
  +
エラーは {{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]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic|1=allow_rgb10_configs=false}} を [[環境変数]] または {{ic|driconf}} として設定します。[https://bugs.freedesktop.org/show_bug.cgi?id=106490]
  +
  +
== 比較一覧 ==
  +
  +
=== VA-API ドライバ ===
  +
  +
{| class="wikitable" style="text-align:center;"
  +
! コーデック
  +
! {{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|libva-mesa-driver}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
  +
! {{pkg|libva-vdpau-driver}} <br> (VDPAU アダプタ)
  +
! {{Pkg|libva-nvidia-driver}}<br> (NVDEC アダプタ)
  +
|-
  +
! colspan=6 | デコード
  +
|-
  +
! MPEG-2
  +
| {{G|GMA 4500 以降}}
  +
| {{G|Broadwell 以降}}
  +
| {{G|Radeon HD 6000 以降<br>GeForce 8 以降<sup>1</sup>}}
  +
| rowspan=6 | [[#VDPAU ドライバ]] を参照
  +
| rowspan=10 | [[#NVIDIA ドライバのみ]] を参照
  +
|-
  +
! H.263/MPEG-4 Visual<sup>4</sup>
  +
| {{No}}
  +
| {{No}}
  +
| {{G|Radeon HD 6000 以降}}
  +
|-
  +
! VC-1
  +
| {{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|Radeon HD 2000 以降<br>GeForce 8 以降<sup>1</sup>}}
  +
|-
  +
! H.265/HEVC 8bit
  +
| {{G|Cherryview/Braswell 以降}}
  +
| {{G|Skylake 以降}}
  +
| {{G|Radeon R9 Fury 以降}}
  +
|-
  +
! H.265/HEVC 10bit
  +
| {{G|Broxton 以降}}
  +
| {{G|Broxton/Apollo Lake 以降}}
  +
| {{G|Radeon 400 以降}}
  +
|-
  +
! VP8
  +
| {{G|Broadwell 以降}}
  +
| {{G|Broadwell 以降}}
  +
| {{No}}
  +
| {{No}}
  +
|-
  +
! VP9 8bit
  +
| {{G|Broxton 以降 <br> Hybrid: Haswell refresh から Skylake<sup>3</sup>}}
  +
| {{G|Broxton/Apollo Lake 以降}}
  +
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}
  +
| [[#VDPAU ドライバ]] を参照<sup>5</sup>
  +
|-
  +
! VP9 10bit & 12bit
  +
| {{G|Kaby Lake 以降}}
  +
| {{G|Kaby Lake 以降}}
  +
| rowspan=2 {{No}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{No}}
  +
| {{G|Tiger Lake 以降}}
  +
| {{G|Radeon RX 6600 以上/以降}}
  +
|-
  +
! colspan=6 | エンコード
  +
|-
  +
! MPEG-2
  +
| {{G|Ivy Bridge 以降}}
  +
| {{G|Broadwell 以降<br>Broxton/Apollo Lake を除く}}
  +
| {{No}}
  +
| rowspan=8 {{-}}
  +
| rowspan=8 {{No}}<sup>6</sup>
  +
|-
  +
! H.264/MPEG-4 AVC
  +
| {{G|Sandy Bridge 以降}}
  +
| {{G|Broadwell 以降}}
  +
| {{G|Radeon HD 7000 以降}}
  +
|-
  +
! H.265/HEVC 8bit
  +
| {{G|Skylake 以降}}
  +
| {{G|Skylake 以降}}
  +
| {{G|Radeon 400 以降}}
  +
|-
  +
! H.265/HEVC 10bit
  +
| {{G|Kaby Lake 以降}}
  +
| rowspan=2 {{G|Kaby Lake 以降}}
  +
| {{G|Raven Ridge + Radeon RX 5000 以降}}
  +
|-
  +
! VP8
  +
| {{G|Cherryview/Braswell 以降 <br> Hybrid: Haswell から Skylake<sup>3</sup>}}
  +
| rowspan=3 {{No}}
  +
|-
  +
! VP9 8bit
  +
| {{G|Kaby Lake 以降}}
  +
| rowspan=2 {{G|Icelake 以降}}
  +
|-
  +
! VP9 10bit & 12bit
  +
| rowspan=2 {{No}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{G|Alchemist 以降}}
  +
| {{G|Radeon RX 7900 以上/以降}}
  +
|}
  +
  +
* <sup>1</sup> GeForce GTX 750 まで。
  +
* <sup>2</sup> 代わりに {{aur|libva-intel-driver-g45-h264}} によってサポートされています。
  +
* <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 ドライバ ===
  +
  +
{| class="wikitable" style="text-align:center;"
  +
! コーデック
  +
! 色深度
  +
! {{pkg|mesa-vdpau}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]
  +
! {{pkg|nvidia-utils}}
  +
! {{pkg|libvdpau-va-gl}}<br>(VA-API アダプタ)
  +
|-
  +
! colspan=5 | デコード
  +
|-
  +
! MPEG-2
  +
! 8bit
  +
| {{G|Radeon R600 以降 <br> GeForce 8 以降<sup>1</sup>}}
  +
| {{G|GeForce 8 以降}}
  +
| rowspan=3 {{No}}
  +
|-
  +
! H.263/MPEG-4 Visual
  +
! 8bit
  +
| {{G|Radeon HD 6000 以降 <br> GeForce 200 以降<sup>1</sup>}}
  +
| {{G|GeForce 200 以降}}
  +
|-
  +
! VC-1
  +
! 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|GeForce 8 以降}}
  +
| [[#VA-API ドライバ]] を参照
  +
|-
  +
! rowspan=2 | H.265/HEVC
  +
! 8bit
  +
| {{G|Radeon R9 Fury 以降}}
  +
| {{G|GeForce 900 以降<sup>3</sup>}}
  +
| rowspan=6 {{No}}
  +
|-
  +
! 10bit
  +
| {{G|Radeon 400 以降}}
  +
| {{No}}<sup>4</sup>
  +
|-
  +
! rowspan=2 | VP9
  +
! 8bit
  +
| 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>2</sup> GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB) は[[Wikipedia:Nvidia PureVideo|除く]]。
  +
* <sup>3</sup> GeForce GTX 970 と GTX 980 は除く。
  +
* <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>5</sup> ドライババージョン 510 から [https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-510-Linux-Beta]
  +
  +
=== NVIDIA ドライバのみ ===
  +
  +
{| class="wikitable" style="text-align:center;"
  +
! rowspan=2 | コーデック
  +
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]
  +
|-
  +
! NVDEC
  +
! NVENC
  +
|-
  +
! MPEG-2
  +
| rowspan=3 {{G|Fermi 以降<sup>1</sup>}}
  +
| rowspan=2 {{No}}
  +
|-
  +
! VC-1
  +
|-
  +
! H.264/MPEG-4 AVC
  +
| {{G|Kepler 以降<sup>2</sup>}}
  +
|-
  +
! H.265/HEVC 8bit
  +
| rowspan=2 {{G|Maxwell (GM206) 以降}}
  +
| {{G|Maxwell (2nd Gen) 以降}}
  +
|-
  +
! H.265/HEVC 10bit
  +
| {{G|Pascal 以降}}
  +
|-
  +
! VP8
  +
| {{G|Maxwell (2nd Gen) 以降}}
  +
| rowspan=3 {{No}}
  +
|-
  +
! VP9 8bit
  +
| {{G|Maxwell (GM206) 以降}}
  +
|-
  +
! VP9 10bit & 12bit
  +
| {{G|Pascal 以降}}
  +
|-
  +
! AV1 8bit & 10bit
  +
| {{G|Ampere 以降<sup>3</sup>}}
  +
| {{G|Ada Lovelace 以降}}
  +
|}
  +
  +
* <sup>1</sup> GM108 は除く (未サポート)
  +
* <sup>2</sup> GM108 と GP108 は除く (未サポート)
  +
* <sup>3</sup> A100 は除く (未サポート)
  +
  +
=== アプリケーションサポート ===
  +
  +
{| class="wikitable"
  +
! rowspan=2 | アプリケーション
  +
! colspan=3 | デコード
  +
! colspan=2 | エンコード
  +
! rowspan=2 | ドキュメント
  +
|-
  +
! 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]]
  +
| {{Yes}}<sup>1</sup>
  +
| {{Yes}}
  +
| {{No}}
  +
| {{-}}
  +
| {{-}}
  +
| [[MPlayer#ハードウェアアクセラレーション]]
  +
|-
  +
! [[Flash]]
  +
| {{No}}<sup>2</sup>
  +
| {{Yes}}<sup>2</sup>
  +
| {{No}}
  +
| {{-}}
  +
| {{-}}
  +
| [[ブラウザプラグイン#Adobe Flash Player]]
  +
|-
  +
! [[Chromium]]
  +
| {{Yes}}
  +
| {{No}}
  +
| {{No}}
  +
| {{Yes}}
  +
| {{No}}
  +
| [[Chromium#ハードウェアビデオアクセラレーション]]
  +
|-
  +
! [[Firefox]]
  +
| {{Yes}}
  +
| {{No}}
  +
| {{No}}
  +
| {{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}} によって提供されています。
  +
* <sup>2</sup> VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。
   
  +
{{TranslationStatus|Hardware video acceleration|2023-12-12|794187}}
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。[[#ソフトウェア|ソフトウェア]]を参照。
 

2023年12月12日 (火) 08:26時点における最新版

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

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

  • Video Acceleration API (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。
  • Video Decode and Presentation API for Unix (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。
  • Advanced Media Framework (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 の翻訳バージョンです。最後の翻訳日は 2023-12-12 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。