web-dev-qa-db-ja.com

ハードウェアアクセラレーションを有効にする方法

Ubuntu 16.04をインストールし、NVIDIA GTX 1070 OCを使用しています。このPPAを追加しました。

ppa:graphics-drivers/ppa

そして、GTX 1070 OC用にnvidia-370パッケージをインストールしました。次に、HEVCコーデックで4Kビデオファイルを再生し、ハードウェアアクセラレーションを使用してHEVCコーデックをデコードできるようにしましたが、mpvプレーヤーはソフトウェアデコードmodを使用していました。この問題を修正するにはどうすればよいですか?

3

免責事項:申し訳ありませんが、mpvプレーヤーではなくVLCの答えです。私の設定では、VLCは低CPUで正常に動作していますが、mpvプレーヤーはそうではないため、mpvプレーヤーにはバグやサポートの欠如があると思います。 FFmpegマルチスレッドの問題に直面する可能性があります(ポイント4を参照)。

私はこれをうまく機能させるのに本当に苦労しましたが、AMDと比較してNVIDIA GTX 10 * 0(Pascal)HEVCのサポートが限られていることに少しがっかりしています。

まず第一に:

警告:NVIDIAはLinuxでHEVCメインプロファイルのみをサポートします

執筆時点では、NVIDIAドライバー367.57は HEVCプロファイルMainではなくMain 10などのみをサポートしています。 参照: NVIDIAフォーラムの機能リクエストこれはNVIDIA Linuxドライバーの制限であり、ハードウェア(GTX10 * 0)は技術的にサポートしています(WindowsのMPC-HCはMain 10を読み取ります)簡単に)。

HEVCでエンコードされたほとんどの4Kムービーは、HEVC Main 10プロファイルを使用するようになりました。

メディアファイルHEVCプロファイルの確認:ファイル> Properties> Audio/Videoタブ> Video> Codecを右クリックして、ファイルHEVCプロファイルを確認できます。

ドライバーHEVCプロファイルのサポートを確認します:NVIDIA独自のドライバーに切り替え(以下を参照)、実行します:

$ vdpauinfo
Information string: NVIDIA VDPAU Driver Shared Library  367.57  [crop]
Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
[crop]
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

1. NVIDIA独自のドライバーに切り替える

少なくともバージョンR367(nvidia-367)が必要です。

 software-properties-gtk &

Additional driversタブに移動し、NVIDIA binary driverおよびApplyの変更を確認します。

2. VLCでハードウェアアクセラレーションを有効にします

もちろん、VLCでハードウェアアクセラレーションを有効にする必要があります> Tools> PreferencesSimple)> Input / Codecs> Hardware-acceleration decoding = Auto。 NVIDIAの場合、明示的にVDPAU video decoderを選択できます。

3. VLCを2.2.4または3.0に更新します

VLC 2.2.2(Ubuntu 16.04)にはいくつかのバグがあり、後のバージョンで修正されました(を参照: changelog)。この誤解を招くエラーにつながります。

$ vlc --version
VLC media player 2.2.2 Weatherwax
$ vlc <file>
[crop]
[00007fa4b42cc5d8] vdpau_avcodec generic error: unsupported codec 1211250229 or profile 1

これは明らかに誤解を招くバグの多いエラーです。わかりにくいですが、1211250229AV_CODEC_ID_HEVCrustc this rusty codeでコンパイルすることで確認できます。そして、vdpauinfoから、HEVCプロファイル1= Main )がサポートされていることがわかりました。

現時点では、VLC 2.2.4は公式のVLC PPAから入手できません(ここで安定バージョンを確認してください)。マスターブランチからVLC 3.0にアップグレードします(ここでマスターバージョンを確認してください)。ただし、毎晩のリリースであることに注意してください。

$ Sudo add-apt-repository ppa:videolan/master-daily
$ Sudo apt update
$ Sudo apt install vlc
$ vlc --version
[crop]
VLC version 3.0.0-git Vetinari

4. VLC FFmpegマルチスレッドを一時的に無効にします

これでは十分ではないため、この問題に直面する可能性があります。

$ vlc <file> --verbose
[crop]
[00007f6bc4ccc688] avcodec decoder warning: thread type 1: disabling hardware acceleration

VLCフォーラムでの このスレッド に関する説明:

これは、ハードウェアアクセラレーションとスレッド化を同時に有効にできないFFmpegを使用していることを意味します。 libavを使用する必要があります[ただし]これはVLCのコンパイル中に決定されます。実行時に変更することはできません。

同じスレッドで回避策があります:VLC>ツール>設定(すべて)>入力/コーデック>ビデオコーデック>FFmpegで、Threadsの値を0(auto)から1

これで完了です!

ただし、これは手動による回避策です。GPUアクセラレーションされていないビデオを視聴するには、VLC FFmpeg Threads設定をリセットしてすべてのCPUコアを使用するか、libavを使用してソースからVLCをコンパイルする必要があります。

1
KrisWebDev