婦人声明

婦人声明

簡単に言えば、問題はChromeでハードウェアビデオアクセラレーションを有効にできないことです。私のデスクトップには、Kubuntu 20.04を実行しているGPU Intel UHD 750とCore i5 11600が統合されています。

最初はハードウェアアクセラレーションが全くなく、intel-media-va-driver-non-freeVLCをインストールしたのに映像を再生するのにアクセラレーションがまったくありませんでした。の出力は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他の端末ウィンドウでも使用できます(sudoArchLinuxには必須、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.platformencoderMirosoft trueTeamsをサポートしていません。

それ同じ拡張子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

おすすめ記事