コンテンツにスキップ

ハードウェアビデオアクセラレーション

提供: ArchWiki
2026年2月14日 (土) 07:54時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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

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

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

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

インストール

Intel

VA-API

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

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

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

Vulkan Video

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 に対応しています:

  • 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 をサポートしています:

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

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

この記事またはセクションは情報が古くなっています。
理由: 最新の AMD Media Framework は、オープンソースドライバ以外に追加のプロプライエタリなパッケージをもはや必要としていません。しかし、AUR のパッケージは更新されておらず、オープンな AMDGPU ドライバを使用する新しい amf パッケージもアップロードされていません。 (Discuss)
  • Fiji 及びそれ以降の GPU における AMF は amf-amdgpu-proAUR によってサポートされています。
ノート
  • 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 によるビデオデコードよりも多くの電力を消費します。 回避策は、NVIDIA ドライババージョン 580.105.08 以降を使用し、環境変数 CUDA_DISABLE_PERF_BOOST=1 を設定することです。

確認

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

ヒント
  • コマンドラインサポートのある 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 の場合、amdgpu_top を使用して GPU 使用率をモニタできます。
  • 任意の 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: OpenGL/VAAPI backend for VDPAU

Video surface:

name   width height types
-------------------------------------------
420     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 
422     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 
444     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 
420_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 
422_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 
444_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                          --- not supported ---
MPEG2_SIMPLE                   --- not supported ---
MPEG2_MAIN                     --- not supported ---
H264_BASELINE                  51 16384  2048  2048
H264_MAIN                      51 16384  2048  2048
H264_HIGH                      51 16384  2048  2048
VC1_SIMPLE                     --- not supported ---
VC1_MAIN                       --- not supported ---
VC1_ADVANCED                   --- not supported ---
...

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

設定

この記事またはセクションは情報が古くなっています。
理由: mesa 25.3.0 以降、オープンソースドライバから VDPAU のサポートが削除されました。以下の例の radeonsi ドライバもその対象です。 (Discuss)

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

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

  • オープンソースの AMD、Intel、Nouveau ドライバの場合、va_gl に設定する必要があります
  • 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 を設定してください。
警告

一部の古い GPU モデルは Mesa での Vulkan Video のサポートがありません。そのような GPU で Vulkan Video サポートを強制的に有効化すると、一部のアプリケーションがクラッシュします場合があります (例えば、mpv)。

アプリケーションの設定

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

ビデオプレイヤ:

ウェブブラウザ:

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

トラブルシューティング

Failed to open VDPAU backend

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

mesa 25.3.0 以降、VDPAU のサポートがオープンソースなドライバから削除されました (d3d12nouveaur600radeonsivirtio_gpu)。以前にこれらのドライバを使用していた場合、それらのパッケージを#変換レイヤーに置き換えるか、VA-API を直接使うようにアプリケーションを設定する必要があります。

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

iHD 使用時に vainfo が失敗する

以下のエラーが発生する場合:

$ vainfo
Trying display: wayland
Trying display: x11
error: can't connect to X server!
Trying display: drm
libva error: dlopen of /usr/lib64/dri/iHD_drv_video.so failed: /usr/lib64/dri/iHD_drv_video.so: undefined symbol: _ZN6GmmLib16GmmClientContext9GmmGetAILEv
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.4.1
vainfo: Supported profile and entrypoints
[...]

intel-media-driver-legacyAUR をレガシーではないパッケージの代わりにインストールしてみてください。これは、intel-compute-runtime-legacyAUR とも動作します。[4]

比較一覧

VA-API ドライバ

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

VDPAU ドライバ

コーデック 色深度 nvidia-utils libvdpau-va-gl
(VA-API アダプタ)
デコード
MPEG-2 8bit GeForce 8 及びそれより新しいもの No
H.263/MPEG-4 Visual 8bit GeForce 200 及びそれより新しいもの
VC-1 8bit GeForce 8 及びそれより新しいもの1
H.264/MPEG-4 AVC 8bit GeForce 8 及びそれより新しいもの #VA-API ドライバ を参照
H.265/HEVC 8bit GeForce 900 及びそれより新しいもの2 No
10bit No3
VP9 8bit GeForce 900 及びそれより新しいもの2
10bit/12bit No3
AV1 8bit RTX 30 series 及びそれより新しいもの4
10bit No3
  1. GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB) は除く
  2. GeForce GTX 970 と GTX 980 は除く。
  3. NVIDIA の実装は8ビットストリームまでに制限されています [10] [11]
  4. ドライババージョン 510 から [12]

NVIDIA ドライバのみ

コーデック nvidia-utils [13]
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 Yes 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#ハードウェアアクセラレーション
Chromium Yes No No No Yes No No Chromium#ハードウェアビデオアクセラレーション
Firefox Yes No No No No No No Firefox#ハードウェアビデオアクセラレーション
GNOME/Web GStreamer ? ? ? GNOME Web#ビデオ
翻訳ステータス: このページは en:Hardware video acceleration の翻訳バージョンです。最後の翻訳日は 2026-02-14 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。