Ubuntu 16.04をインストールし、NVIDIA GTX 1070 OCを使用しています。このPPAを追加しました。
ppa:graphics-drivers/ppa
そして、GTX 1070 OC用にnvidia-370パッケージをインストールしました。次に、HEVCコーデックで4Kビデオファイルを再生し、ハードウェアアクセラレーションを使用してHEVCコーデックをデコードできるようにしましたが、mpvプレーヤーはソフトウェアデコードmodを使用していました。この問題を修正するにはどうすればよいですか?
免責事項:申し訳ありませんが、mpvプレーヤーではなくVLCの答えです。私の設定では、VLCは低CPUで正常に動作していますが、mpvプレーヤーはそうではないため、mpvプレーヤーにはバグやサポートの欠如があると思います。 FFmpegマルチスレッドの問題に直面する可能性があります(ポイント4を参照)。
私はこれをうまく機能させるのに本当に苦労しましたが、AMDと比較してNVIDIA GTX 10 * 0(Pascal)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 ---
少なくともバージョンR367(nvidia-367
)が必要です。
software-properties-gtk &
Additional drivers
タブに移動し、NVIDIA binary driver
およびApply
の変更を確認します。
もちろん、VLCでハードウェアアクセラレーションを有効にする必要があります> Tools
> Preferences
(Simple
)> Input / Codecs
> Hardware-acceleration decoding
= Auto
。 NVIDIAの場合、明示的にVDPAU video decoder
を選択できます。
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
これは明らかに誤解を招くバグの多いエラーです。わかりにくいですが、1211250229
はAV_CODEC_ID_HEVC
(rustc
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
これでは十分ではないため、この問題に直面する可能性があります。
$ 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をコンパイルする必要があります。