「ハードウェアビデオアクセラレーション」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→アプリケーションサポート: リンクを修正) |
(→インストール: 同期) |
||
19行目: | 19行目: | ||
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています: |
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています: |
||
− | * |
+ | * [https://github.com/intel/media-driver/#supported-platforms Broadwell] [[wikipedia:Template:Intel_processor_roadmap|(2014)]] 及びそれ以降の HD Graphics シリーズは {{Pkg|intel-media-driver}} によってサポートされています。 |
− | * Coffee Lake までの GMA 4500 |
+ | * ([[wikipedia:Coffee_Lake|Coffee Lake]] (2017) までの HD Graphics を含む) GMA 4500 (2008) 及びそれ以降の GPU は {{Pkg|libva-intel-driver}} によってサポートされています。 |
− | * GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコー |
+ | * GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコードのハードウェアアクセラレーション]] を参照。 |
− | * Haswell |
+ | * [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver}} によってサポートされています。 |
− | * Skylake 以降は {{Pkg|linux-firmware}} も必要です。 |
+ | * Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。 |
[https://01.org/linuxmedia/vaapi VAAPI がサポートするハードウェアと機能] もご覧ください。 |
[https://01.org/linuxmedia/vaapi VAAPI がサポートするハードウェアと機能] もご覧ください。 |
||
31行目: | 31行目: | ||
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
||
− | * GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。 |
+ | * GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。 |
− | * NVIDIA のバイナリドライバーから抽出される {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。 |
+ | * (現在 NVIDIA のバイナリドライバーから抽出される) {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。 |
− | [[NVIDIA]] プロプライエタリドライバ |
+ | [[NVIDIA]] プロプライエタリドライバは {{Pkg|nvidia-utils}} によってサポートされています: |
− | * |
+ | * [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降の GPU における VDPAU |
+ | * [[Wikipedia:Fermi_(microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDECODE [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf] |
||
− | * NVDECODE/NVENCODE は Kepler 以降で {{Pkg|nvidia-utils}} によってサポートされています。 |
||
+ | * [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENCODE |
||
=== ATI/AMD === |
=== ATI/AMD === |
||
43行目: | 44行目: | ||
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
||
− | * |
+ | * VA-API は Radeon HD 2000 及びそれ以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。 |
− | * |
+ | * VDPAU は Radeon R300 及びそれ以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。 |
− | [[ |
+ | [[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。 |
+ | * [[Wikipedia:Radeon_Rx_300_series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。 |
||
− | [[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、VA-API と VDPAU に対応しています。 |
||
+ | {{Note| |
||
− | === 互換レイヤー === |
||
+ | * 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。 |
||
+ | * [[Wikipedia:High_Efficiency_Video_Coding|HEVC]] エンコードは [[Wikipedia:Radeon_RX_5000_series|Navi]] より古い GPU では利用できない場合があります。 |
||
+ | }} |
||
+ | === 互換レイヤー === |
||
− | デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには: |
||
− | * {{ |
+ | * {{App|libva-vdpau-driver|VA-API のための VDPAU ベースのバックエンド。|https://cgit.freedesktop.org/vaapi/vdpau-driver|{{Pkg|libva-vdpau-driver}}, {{AUR|libva-vdpau-driver-chromium}}, {{AUR|libva-vdpau-driver-vp9-git}}}} |
+ | * {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}} |
||
− | * {{AUR|libva-vdpau-driver-chromium}} – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。 |
||
+ | * {{App|nvidia-vaapi-driver|VA-API のための [[CUDA]] NVDECODE ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{AUR|libva-nvidia-driver}}}} |
||
+ | {{Note| |
||
− | デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには: |
||
+ | Nvidia ドライバの 525 シリーズにはリグレッションがあり、VA-API が機能しなくなります。 [https://github.com/elFarto/nvidia-vaapi-driver/issues/126 nvidia-vaapi-driver#126] |
||
+ | 修正されるまでの間、ドライバをバージョン 520 に[[ダウングレード]]するか、[https://github.com/elFarto/nvidia-vaapi-driver#direct-backend 実験的な direct-backend] を使用することができます。 |
||
− | * {{Pkg|libvdpau-va-gl}} – VA-API の VDPAU バックエンド ([https://github.com/i-rinat/libvdpau-va-gl/issues/67#issuecomment-318470175 H.264 のみサポート])。 |
||
+ | }} |
||
== 確認 == |
== 確認 == |
2023年1月3日 (火) 11:05時点における版
ハードウェアビデオアクセラレーションにより、ビデオカードで動画をデコード・エンコードするを活用することで、CPU の負担を下げて電力を節約することができます。
Linux でこれを実現する方法は複数存在します:
- Video Acceleration API (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現するオープンソースライブラリです。Intel によって開発されました。
- Video Decode and Presentation API for Unix (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。VDPAU は2015年9月から更新されていません。
- NVDECODE/NVENCODE - NVIDIA Fermi, Kepler, Maxwell, Pascal 世代の GPU によって使われているハードウェアビデオアクセラレーションのためのプロプライエタリ API。
2007年以前のビデオカードについては XvMC を参照してください。ドライバーとアプリケーションのサポートの包括的な概要については、#比較一覧 を参照してください。
目次
インストール
Intel
Intel Graphics オープンソースドライバーは VA-API に対応しています:
- Broadwell (2014) 及びそれ以降の HD Graphics シリーズは intel-media-driver によってサポートされています。
- (Coffee Lake (2017) までの HD Graphics を含む) GMA 4500 (2008) 及びそれ以降の GPU は libva-intel-driver によってサポートされています。
- GMA 4500 の H.264 デコードは libva-intel-driver-g45-h264AUR によってサポートされています。Intel#GMA 4500 での H.264 デコードのハードウェアアクセラレーション を参照。
- Haswell Refresh から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは intel-hybrid-codec-driverAUR によってサポートされています。
- Skylake 及びそれ以降は linux-firmware も必要です。
VAAPI がサポートするハードウェアと機能 もご覧ください。
NVIDIA
Nouveau オープンソースドライバーは VA-API と VDPAU に対応しています:
- GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は libva-mesa-driver と mesa-vdpau によってサポートされています。
- (現在 NVIDIA のバイナリドライバーから抽出される) nouveau-fwAUR ファームウェアパッケージが 必要 です。
NVIDIA プロプライエタリドライバは nvidia-utils によってサポートされています:
- GeForce 8 シリーズ及びそれ以降の GPU における VDPAU
- Fermi 及びそれ以降の GPU における NVDECODE [1]
- Kepler 及びそれ以降の GPU における NVENCODE
ATI/AMD
ATI と AMDGPU オープンソースドライバーは VA-API と VDPAU に対応しています:
- VA-API は Radeon HD 2000 及びそれ以降の GPU で libva-mesa-driver によってサポートされています。
- VDPAU は Radeon R300 及びそれ以降の GPU で mesa-vdpau によってサポートされています。
AMDGPU PRO プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。
- Fiji 及びそれ以降の GPU における AMF は amf-amdgpu-proAUR によってサポートされています。
互換レイヤー
- libva-vdpau-driver — VA-API のための VDPAU ベースのバックエンド。
- https://cgit.freedesktop.org/vaapi/vdpau-driver || libva-vdpau-driver, libva-vdpau-driver-chromiumAUR, libva-vdpau-driver-vp9-gitAUR
- libvdpau-va-gl — OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。
- nvidia-vaapi-driver — VA-API のための CUDA NVDECODE ベースのバックエンド。
確認
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 : VAEntrypointEncPicturehttp://img.2chan.net/b/futaba.php?mode=cat VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileVP8Version0_3 : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice
あなたのカードを使ってデコードできるフォーマットが VAEntrypointVLD
で、エンコードできるフォーマットが VAEntrypointEncSlice
で示されます。
上の例では、以下の行があることから i965
ドライバーが使われていることが確認できます:
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
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 の設定
VA-API のドライバーは自動で認識されます [2]。使用されているドライバーを確認する方法は確認を見てください。LIBVA_DRIVER_NAME
環境変数を設定することで使用するドライバーを上書きできます:
- Intel Graphics:
- libva-intel-driver の場合は
i965
を使ってください。 - intel-media-driver の場合は
iHD
を使ってください。
- libva-intel-driver の場合は
- NVIDIA:
- ATI/AMD:
- AMDGPU の場合は
radeonsi
を使ってください。 - AMD Catalyst の場合は
fglrx
を使ってください。
- AMDGPU の場合は
VDPAU の設定
VDPAU で使用されるドライバーは自動的に認識されますが、VDPAU_DRIVER
環境変数を使うことで上書きすることができます。
使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください:
- Intel Graphics や AMD Catalyst の場合
va_gl
に設定する必要があります。 - オープンソースの AMD/ATI ドライバーの場合、使用している GPU にあわせて適切なドライバーを設定してください。確認を参照。
- オープンソースの Nouveau ドライバーの場合は
nouveau
に設定してください。 - NVIDIA のプロプライエタリドライバーの場合は
nvidia
に設定してください。
トラブルシューティング
Failed to open VDPAU backend
libvdpau-va-gl を使用している場合に VDPAU_DRIVER
を上書きしないと発生するエラーです。何らかの理由で VDPAU が使用するドライバーを正しく認識できていません。VDPAU の設定を見てください。
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。ソフトウェアを参照。
VAAPI init failed
エラーは libva: /usr/lib/dri/i965_drv_video.so init failed
という行で確認できます。Wayland が正しく認識されていないことが原因で発生します。$DISPLAY
の設定を解除することで mpv, mplayer, VLC などは X11 であると誤認しないようになります。mpv の場合は --opengl-backend=wayland
パラメータを追加することでも解決できます。
AMDGPU ドライバーを使用したビデオデコード時の破損や歪み
AMDGPU ドライバーでビデオデコードの破損または歪みが発生する場合は、allow_rgb10_configs = false
を 環境変数 または driconf
として設定します。 [3]
比較一覧
VA-API ドライバ
コーデック | libva-intel-driver [4] | intel-media-driver [5] | libva-mesa-driver [6] [7] | Catalyst XvBA | libva-vdpau-driver
(VDPAU アダプタ) |
---|---|---|---|---|---|
デコード | |||||
MPEG2 | GMA 4500 以降 | Broadwell 以降 | Radeon HD 6000 以降 GeForce 8 以降1 |
Radeon HD 4000 以降 | #VDPAU を参照 |
MPEG4 | No | No | Radeon HD 6000 以降 | Radeon HD 6000 以降 | |
AVC (H.264) | GMA 45002, Ironlake 以降 | Broadwell 以降 | Radeon HD 2000 以降 GeForce 8 以降1 |
Radeon HD 4000 以降 | |
HEVC (H.265) 8bit | Cherryview/Braswell 以降 | Skylake 以降 | Radeon R9 Fury 以降 | No | |
HEVC (H.265) 10bit | Broxton 以降 | Broxton/Apollo Lake 以降 | Radeon 400 以降 | ||
VC1 | Sandy Bridge 以降 | Broadwell 以降 | Radeon HD 2000 以降 GeForce 9300 以降1 |
Radeon HD 4000 以降 | |
VP8 | Broadwell 以降 | No | No | No | |
VP9 8bit | Broxton 以降 Hybrid: Haswell から Skylake3 |
Broxton/Apollo Lake 以降 | Raven Ridge 以降 | ||
VP9 10bit | Kaby Lake 以降 | Kaby Lake 以降 | |||
エンコード | |||||
MPEG2 | Ivy Bridge 以降 | Broadwell 以降 Broxton/Apollo Lake は除く |
No | No | No |
AVC (H.264) | Sandy Bridge 以降 | Broadwell 以降 | Radeon HD 7000 以降 | ||
HEVC (H.265) 8bit | Skylake 以降 | Skylake 以降 | Raven Ridge 以降 | ||
HEVC (H.265) 10bit | Kaby Lake 以降 | Cannonlake 以降 | |||
VP8 | Cherryview/Braswell 以降 Hybrid: Haswell から Skylake3 |
No | |||
VP9 8bit | Kaby Lake 以降 | Icelake 以降 | |||
VP9 10bit | No |
- 1 GeForce GTX 750 まで対応。
- 2 libva-intel-driver-g45-h264AUR パッケージによってサポートされています。
- 3 Hybrid VP8 エンコーダ・VP9 デコーダは intel-hybrid-codec-driverAUR によってサポートされています [8]。
VDPAU ドライバ
コーデック | mesa-vdpau [10] [11] | nvidia-utils [12] | libvdpau-va-gl (VA-API アダプタ) | |
---|---|---|---|---|
デコード | ||||
MPEG2 | Radeon R300 以降 GeForce 8 以降1 |
GeForce 8 以降 | No | |
MPEG4 | Radeon HD 6000 以降 GeForce 200 以降1 |
GeForce 200 以降 | ||
AVC (H.264) | Radeon HD 2000 以降 GeForce 8 以降1 |
GeForce 8 以降 | #VA-API を参照 | |
HEVC (H.265) 8bit | Radeon R9 Fury 以降 | GeForce 900 以降2 | No | |
HEVC (H.265) 10bit | Radeon 400 以降 | No3 | ||
VC1 | Radeon HD 2000 以降 GeForce 9300 以降1 |
GeForce 8 以降4 |
- 1 GeForce GTX 750 まで対応。
- 2 GeForce GTX 970 と GTX 980 は除く。
- 3 NVIDIA の実装は8ビットストリームまでに制限されています [13] [14]。
- 4 GeForce 8800 Ultra, 8800 GTX, 8800 GTS (320/640 MB) は除く。
NVIDIA ドライバのみ
コーデック | nvidia-utils | |
---|---|---|
デコード | エンコード | |
MPEG-2 | Fermi 以降1 | No |
VC-1 | ||
AVC (H.264) | Kepler 以降2 | |
HEVC (H.265) 8bit | Maxwell (GM206) 以降 | Maxwell (2nd Gen) 以降 |
HEVC (H.265) 10bit | Pascal 以降 | |
VP8 | Maxwell (2nd Gen) 以降 | No |
VP9 8bit | Maxwell (GM206) 以降 | |
VP9 10bit | Pascal 以降 | |
AV1 8bit & 10bit | Ampere 以降3 |
- 1 GM108 は除く (未サポート)
- 2 GM108 と GP108 は除く (未サポート)
- 3 A100 は除く (未サポート)
アプリケーションサポート
Application | Decoding | Encoding | Documentation | |||
---|---|---|---|---|---|---|
VA-API | VDPAU | NVDECODE | VA-API | NVENCODE | ||
FFmpeg | Yes | Yes | Yes | Yes | Yes | FFmpeg#ハードウェアアクセラレーション |
GStreamer | Yes1 | No | Yes | Yes1 | Yes | GStreamer#ハードウェアアクセラレーション |
Kodi | Yes | Yes | No | – | – | Kodi#ヒントとテクニック |
mpv | Yes | Yes | Yes | – | – | Kodi#ヒントとテクニック |
VLC media player | Yes | Yes | No | – | – | VLC media player#ハードウェアアクセラレーションのサポート |
MPlayer | Yes2 | Yes | No | – | – | MPlayer#ハードウェアアクセラレーション |
Flash | No3 | Yes3 | No | – | – | ブラウザプラグイン#Adobe Flash Player |
Chromium | Yes4 | No | No | Yes4 | No | Chromium#設定 |
Firefox | Yes | No | No | No | No | Firefox#ハードウェアビデオアクセラレーション |
GNOME Web | GStreamer | ? | ? | GNOME Web#ビデオ |
- 1 GStreamer uses a whitelist of VA-API drivers. To ignore the whitelist, see GStreamer#Ignore driver whitelist.
- 2 VA-API support provided by mplayer-vaapiAUR instead.
- 3 VDPAU is supported only by NPAPI plugin. PPAPI plugin to NPAPI browser experimental adapter is available that provides partial VA-API and VDPAU acceleration.
- 4 Xorg only. Wayland is not supported. XWayland exhibits choppiness FS#67035.