簡単に言えば、問題はChromeでハードウェアビデオアクセラレーションを有効にできないことです。私のデスクトップには、Kubuntu 20.04を実行しているGPU Intel UHD 750とCore i5 11600が統合されています。
最初はハードウェアアクセラレーションが全くなく、intel-media-va-driver-non-free
VLCをインストールしたのに映像を再生するのにアクセラレーションがまったくありませんでした。の出力はvainfo
次のとおりです。
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_6
libva info: va_openDriver() returns -1
解決策を見つけましたが、同じ問題を抱えている人が見つかりませんでした。私は関連する問題についていくつかのアドバイスに従うことにしました。まず、カーネルを5.11から5.15に更新しましたが、役に立ちませんでした。次に、ここの説明で提案されているように、Intelドライバの21.xxバージョンをインストールするためのリポジトリを追加しました。https://githubmemory.com/repo/HaveAGitGat/Tdarr/issues/452。一部のパッケージをアップグレードして一部のメンテナンスパッケージをインストールした後、ビデオの速度が向上しました。現在の出力は次のとおりvainfo
です。
libva info: VA-API version 1.12.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_12
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.12 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.3.3 (6fdf88c)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
など。
次のステップは、Chromeでハードウェアアクセラレーションを有効にすることです。私はここの指示に従いました。https://www.linuxupising.com/2021/01/how-to-enable-hardware-accelerated.htmlしかし、これは役に立ちません。このchrome://gpu
タブには以下が表示されます。
グラフィック機能の状態
- キャンバス:ソフトウェアのみ。ハードウェアアクセラレーションが無効になっています。
- キャンバス out-of-process ラスター化: 無効
- 合成:ソフトウェアのみ。ハードウェアアクセラレーションが無効になっています。
- マルチラスタスレッド:無効
- Out-of-process ラスター化: 無効
- OpenGL:無効
- ラスター化:ソフトウェアのみ。ハードウェアアクセラレーションの無効化
- 生の画像:無効
- Skiaレンダラー:有効
- ビデオデコード:ソフトウェアのみ。ハードウェアアクセラレーションが無効になっています。
- ブルカン:無効
- WebGL:無効
- WebGL2:無効
検出された問題
- アクセラレーションビデオのデコードは、ブロックリスト、about:flags、またはコマンドラインで無効になりました。
無効な機能:video_decode - GPU合成はブロックリスト、about:flags、またはコマンドラインで無効になります。ブラウザはソフトウェア構成に戻り、ハードウェアアクセラレーションは使用できません。
無効な機能:gpu_compositing - GPU プロセスを開始できません。 SwiftShaderが原因でGPUプロセスが頻繁にクラッシュします。
無効な機能:すべて
...
また、Firefoxでビデオアクセラレーションを有効にしようとしましたが、失敗しました。また、Chromiumをインストールしましたが、ほとんどchrome://gpu
すべての機能が有効になっていますが、ビデオアクセラレーションは有効になっていません。
助けてください!
ベストアンサー1
婦人声明
Chromeベースのブラウザでは、実際にハードウェアアクセラレーションを取得できない可能性があります。しかし、あきらめないでください。まだできることが残っています。
私の設定とあなたの設定の違いは次のとおりです。
- 環境: ArchLinux+XOrg+KDE
- GPU: (
TigerLake-LP GT2 [Iris Xe Graphics]
からlspci
)。 - カーネル: 5.15.7-zen1-1-zen
レシピも似ていると思います。
必須パッケージ
私にはこれらがあります(名前はUbuntuと異なる場合があります):
- メサ
- xf86-ビデオ-インテル
- リブア
- libva - インテルドライバ
- libva-メサ-ドライバ
- libva-vdpau-ドライバ
- メサビデオボー
- intelgmmlib
- インテルメディアドライバー
以下を確認するには、いくつかのツールが必要な場合があります。
- libvaユーティリティ
- vdpauについて
- インテルGPUツール
ブラウザ設定
設定してchrome://flags
ブラウザを再起動しました。これはChromiumでも機能しますが、Vivaldiの内部URLはvivaldi://
プレフィックスにあります。
- ソフトウェアレンダリングリストのオーバーライド
- GPUラスター化
- ゼロコピーラスタライザー
- 新しいGPUスレッドを使用するには、ディスプレイシンセサイザーを有効にしてください。
- 2Dキャンバスの加速
- プロセス外部2Dキャンバスラスター化
ブラウザの起動
追加オプションを使用してブラウザを再起動する必要があります。
--enable-features=VaapiVideoDecoder
開始プロファイルを編集してこのプロファイルを追加できます。私は今、
/usr/bin/google-chrome-stable --enable-features=VaapiVideoDecoder %U
状態確認
IMHO、これがあなたができる最善の方法です。
ブラウザ
再起動後、内部URLに移動してchrome://gpu
確認できます。私自身の状態は次のとおりです。
Graphics Feature Status
Canvas: Hardware accelerated
Canvas out-of-process rasterization: Enabled
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Hardware accelerated
OpenGL: Enabled
Rasterization: Hardware accelerated on all pages
Raw Draw: Disabled
Skia Renderer: Enabled
Video Decode: Hardware accelerated
Vulkan: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Raw Draw: Disabled
ブラウザではうまく機能しなかったため、そのままにしておきました。一度やりたいならフラグに戻って」生画像のアクティブ化「旗。
vainfo
インストールされたら実行してみてください。私にとってうまくいく方法は次のとおりです。
[enzo@Feynman ~] vainfo
vainfo: VA-API version: 1.13 (libva 2.13.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.4.3 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSliceLP
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointEncSliceLP
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointEncSliceLP
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointEncSliceLP
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileHEVCMain12 : VAEntrypointEncSlice
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointEncSlice
VAProfileHEVCMain422_12 : VAEntrypointVLD
VAProfileHEVCMain422_12 : VAEntrypointEncSlice
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_12 : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointEncSliceLP
VAProfileHEVCSccMain10 : VAEntrypointVLD
VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444 : VAEntrypointVLD
VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
vdpauinfo
同じ上記と。コアダンプを引き起こすバグがどこかにあります。しかし、誰も気づかないようでした。 :-(
しかし、使用してもMALLOC_CHECK_
あまり役に立ちません。
[enzo@Feynman ~] MALLOC_CHECK_=2 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 ---
MPEG4_PART2_SP --- not supported ---
MPEG4_PART2_ASP --- not supported ---
DIVX4_QMOBILE --- not supported ---
DIVX4_MOBILE --- not supported ---
DIVX4_HOME_THEATER --- not supported ---
DIVX4_HD_1080P --- not supported ---
DIVX5_QMOBILE --- not supported ---
DIVX5_MOBILE --- not supported ---
DIVX5_HOME_THEATER --- not supported ---
DIVX5_HD_1080P --- not supported ---
H264_CONSTRAINED_BASELINE 51 16384 2048 2048
H264_EXTENDED --- not supported ---
H264_PROGRESSIVE_HIGH --- not supported ---
H264_CONSTRAINED_HIGH --- not supported ---
H264_HIGH_444_PREDICTIVE --- not supported ---
VP9_PROFILE_0 --- not supported ---
VP9_PROFILE_1 --- not supported ---
VP9_PROFILE_2 --- not supported ---
VP9_PROFILE_3 --- not supported ---
HEVC_MAIN --- not supported ---
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---
HEVC_MAIN_444_10 --- not supported ---
HEVC_MAIN_444_12 --- not supported ---
Output surface:
name width height nat types
----------------------------------------------------
B8G8R8A8 16384 16384 y
R8G8B8A8 16384 16384 y
R10G10B10A2 16384 16384 y
B10G10R10A2 16384 16384 y
A8 16384 16384 y
Bitmap surface:
name width height
------------------------------
B8G8R8A8 16384 16384
R8G8B8A8 16384 16384
R10G10B10A2 16384 16384
B10G10R10A2 16384 16384
A8 16384 16384
Video mixer:
feature name sup
------------------------------------
DEINTERLACE_TEMPORAL -
DEINTERLACE_TEMPORAL_SPATIAL -
INVERSE_TELECINE -
NOISE_REDUCTION -
SHARPNESS -
LUMA_KEY -
HIGH QUALITY SCALING - L1 -
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -
parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH -
VIDEO_SURFACE_HEIGHT -
CHROMA_TYPE -
LAYERS -
attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR -
CSC_MATRIX -
NOISE_REDUCTION_LEVEL -
SHARPNESS_LEVEL -
LUMA_KEY_MIN_LUMA -
LUMA_KEY_MAX_LUMA -
Segmentation fault (core dumped)
一部のVDPAUライブラリには、このエラーが発生してハードウェアアクセラレーションが利用できなくなるバグがあるようです。しかし、これは単なる推測です。
現実世界
残念ながら、現実は私たちの風と反対かもしれません。
あるタブでビデオを再生し(私はYoutubeを使用します)、別のタブで開くにchrome://media-internals
はプレイヤーブランド。内部に最近の選手というプロジェクトを選択しますblob:https://www.youtube.com/...
。
内部にプレーヤーのプロパティ次の行を見つけることができます。
kVideoDecoderName "Dav1dVideoDecoder"
これはハードウェアデコーダではなく、ハードウェアデコーダでなければなりませんVDAVideoDecoder
。
次へ丸太この地域でいくつかの手がかりを見つけることができます:
00:00:00.321 info "Selected FFmpegAudioDecoder for audio decoding, config: codec: opus, profile: unknown, bytes_per_channel: 4, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Float 32-bit, bytes_per_frame: 8, seek_preroll: 80000us, codec_delay: 312, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: true, target_output_channel_layout: STEREO, has aac extra data: false"
00:00:00.321 info "Failed to initialize DecryptingVideoDecoder"
00:00:00.321 info "Failed to initialize VDAVideoDecoder"
00:00:00.321 info "Failed to initialize VpxVideoDecoder"
00:00:00.322 info "Effective playback rate changed from 0 to 1"
00:00:00.322 event "kPlay"
00:00:00.325 kIsVideoDecryptingDemuxerStream false
00:00:00.325 kVideoDecoderName "Dav1dVideoDecoder"
00:00:00.325 kIsPlatformVideoDecoder false
intel_gpu_top
他の端末ウィンドウでも使用できます(sudo
ArchLinuxには必須、Ubuntuは不明です)。
「レンダリング/3D」、「ブリッター」、「ビデオ」、「ビデオの強化」の4つの「エンジン」を使用できます。
ブラウザの再生中、最初の2つのエンジンは使用中で、「ビデオ」はアイドル状態であることがわかります。私のGPUが提供するビデオデコードエンジンはまったく使用されていません!
ブラウザはハードウェアアクセラレーションビデオを利用できるはずだと思いますが、利用できないようです。
別の検査をしてみましょう。
可視光通信
VLCがハードウェアアクセラレーションを活用できるようです。 GUIを使用して実行し、ツール>基本設定>入力とコーデックに移動して、下の[自動]オプションを選択します。ハードウェアアクセラレーションデコード。次にそれを閉じて、コマンドラインからテストビデオを再生して診断出力を取得します。
[enzo@Feynman ~] vlc ATestVideo.AC3.1080p.x264-WRM.mkv
VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)
[00005597db23e640] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00005597db311900] main audio output error: too low audio sample frequency (0)
[00007ff9e8d2fc00] main decoder error: failed to create audio output
[00005597db311900] vlcpulse audio output error: digital pass-through stream connection failure: Not supported
[00005597db311900] main audio output error: module not functional
[00007ff9e8d2fc00] main decoder error: failed to create audio output
[00007ff9c8005d20] gl gl: Initialized libplacebo v3.120.3 (API v120)
[00007ff9e8c0d6b0] avcodec decoder: Using Intel iHD driver for Intel(R) Gen Graphics - 21.4.3 () for hardware decoding
最後の2行は、ハードウェアデコードを使用していることを示します。ログを信頼していないため、別のターミナルウィンドウで実行して、intel_gpu_top
「video」リソースが現在活発に使用されていることを確認できます。
Firefoxブラウザ
私はこれが元の範囲から少し外れていることを知っていますが、言及する価値があると思いました。 Firefoxを使用すると、XOrgとWaylandのVA-APIのおかげで、いくつかのハードウェアアクセラレーションビデオデコードが実行されていることがわかります。
ArchLinux Wiki(下のリンク)にあるこのガイドでは、これはあなたの責任です)ハードウェアアクセラレーションビデオを有効にするためにいくつかのスイッチを変更する方法を学びます。intel_gpu_top
通常、GPUが動作しているかどうかが表示されます。
たとえば、Vimeoはこのサポートを利用できるようですが、YouTubeは特定のブラウザ拡張VP9ビデオコーデックを無効にします。
同様に.Firefoxもmedia.webrtc.platformencoder
Mirosoft true
Teamsをサポートしていません。
それ同じ拡張子Chromeには存在しますが、Firefoxほどうまく機能しないようです。
仕上げる
ビデオデコードのハードウェアアクセラレーションがLinuxで動作しているようです。
これは、環境のバグではなく、Chromiumベースのブラウザのバグを指摘しています。
たぶん未来は明るくなるかもしれません。しかし、今ではありません。
引用する
主にArchLinux Wikiからのものですが、これらの詳細は他の多くのディストリビューションにも適用できると思います。
https://wiki.archlinux.org/title/Hardware_video_acceleration https://wiki.archlinux.org/title/Chromium#Hardware_video_acceleration https://wiki.archlinux.org/title/VLC_media_player#Hardware_video_acceleration https://wiki.archlinux.org/title/firefox#Hardware_video_acceleration