mpv nvdec YouTubeで動画再生支援の確認 | Ubuntu Studio
サブPC に搭載しているグラボRTX 3060の動画再生支援を 動画プレイヤーmpv、デコーダーnvdec、YouTubeを利用してUbuntu Studio 22.04 LTS 上で確認してみました。
上の画像は CLI(Command Line Interface)から下記のコマンドで起動した mpvプレイヤーで YouTube動画 をストリーミング再生しているスクリーンショットです。動画再生支援が有効なのでCPU使用率は5%です。
Konsole :
$ mpv 動画のURL
通常は mpvインターフェースにURLをドラッグ・ドロップで再生しますがコマンド起動ですと動画の情報が表示されるので調整の際、便利です。
動画再生支援が効いているか否かは、デスクトップ上に表示している Conky(ハードウェア モニタリング アプリ) のGPU温度上昇とCPU使用率、温度で判断できます。
当方の環境では、効いていればGPU温度が上昇(VP9で+2~4℃、AV1で+30℃ほど)しCPU使用率は5%程度、そうでなければGPU温度に変化なくCPU使用率は30~60%程度になります。
例えば、下の画像は av1デコードをサポートしていないFirefoxで8K動画(av1コーデック)を再生した時のスクリーンショットですが
GPUの温度上昇はなく CPU使用率が37%になっています。60%を超えたあたりからバッファが底を付く(上手く繋がらない)と画像がカクつきます。
以上かいつまんで説明しましたが、この方法を使用するため mpvプレイヤーとyt-dlpで YouTubeストリーミング再生時の nvdecハードウェア デコーディングを有効にしました。
このページは、その備忘録です。(2024年4月)
PC仕様とデスクトップ環境
主なPC仕様
マザーボード | ASUS PRIME Z390-A |
---|---|
CPU | Core i9-9900K | CPUクーラー | DeepCool AK500 |
メモリーモジュール | XMP,32GB |
グラフィックスボード | GeForce RTX3060 | 電源ユニット | 750W |
2.5" SSD | Ubuntu Studio 120GB |
デスクトップ環境
Ubuntu Studio | 22.04.4 LTS |
---|---|
デスクトップ | KDE Plasma 5.24 |
ディスプレイサーバ | X.org |
NVIDIAドライバ | nvidia-driver-535 |
CUDAドライバ | none | mpv | none |
yt-dlp | none |
FFmpeg | 4.4.2 |
none …パッケージあり、未インストール
ディスプレイサーバ …nvidiaドライバをインストールするとX.orgに切り替わりWaylandセッションは選択できなくなる
NVIDIAドライバのインストール
既存の .deb版(Ubuntu公式リポジトリ)ドライバをアンインストールして こちらのサイト に倣ってNVIDIAリポジトリ版のドライバをインストールします。
既存ドライバのアンインストール
ドライバのみインストールの場合、端末から
Konsole :
$ sudo apt --purge remove nvidia*
$ sudo apt --purge remove libnvidia*
$ sudo apt autoremove
$ sudo apt autoclean
CUDAもUbuntu公式リポジトリ(apt install cuda)でインストールしている場合
$ sudo apt --purge remove cuda* $ sudo apt --purge remove cudnn* $ sudo apt --purge remove libcuda* $ sudo apt --purge remove libcudnn* $ sudo apt autoremove $ sudo apt autoclean $ sudo rm -rf /usr/lib/cuda*
PC再起動しなくてもよい。
CUDAをインストール
NVIDIAリポジトリ からCUDAをインストールすればグラボのドライバも同時にインストールされます。まずNVIDIAリポジトリを /etc/apt/sources.listに追加しキーをインストールします。端末から
Konsole :
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt update
CUDAをインストールします。
$ sudo apt install cuda-drivers
PC再起動します。
CUDAバージョンを確認して CUDA ToolKitをインストールします。
$ nvidia-smi $ sudo apt install cuda-toolkit-12-4
nvidia-smiの結果は… Driver Version:550.54.15、CUDA Version:12.4
環境変数の設定
CUDAのインストール先にパスを通します。ホームディレクトリ内の.bashrcファイルの最終行に次のコードを追記して保存します。
# nvidia CUDA location export PATH="/usr/local/cuda/bin${PATH:+:${PATH}}" export LD_LIBRARY_PATH="/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
cuDNNをインストール
必要かどうか分からないがとりあえずインストール。CUDA ToolKitのバージョンに合わせます。
$ sudo apt install cudnn9-cuda-12
NVIDIAリポジトリにあるのはcudnn9。
-以上-
Ubuntu公式リポジトリとの違い
NVIDIAリポジトリとの違いはCUDAライブラリのインストール先(ディレクトリ)です。
- NVIDIAリポジトリ… /usr/local/cuda
- Ubuntu公式リポジトリ… /usr/bin/cuda
CUDAを利用するアプリは /usr/local/cudaを参照するのでUbuntu公式リポジトリからインストールした場合、CUDAは機能しません。次のコマンドでインストール先を確認できます。
Konsole :
$ whereis cuda
とすると結果は
CUDA: /usr/lib/cuda
この場合の解決策は、端末から
$ sudo ln -s /usr/lib/cuda/ /usr/local/cuda
のように /usr/local/cuda に向けてシンボリックリンクを設定してやればよいです。
mpvプレイヤーの設定
まず mpvプレイヤーをインストールします。
Konsole :
$ sudo apt install mpv
FFmpegはインストール済みでした。
ダウンロードアプリについて
ストリーミング再生のためダウンロードアプリが必要です。youtube-dlは開発停止のため使用できません。変わりに yt-dlpを使用しますが、Ubuntu公式リポジトリからインストールした場合次のようなエラーになります。
$ mpv 動画のURL
エラーメッセージ: [ytdl_hook] ERROR: [youtube] 動画のURL: Unable to extract uploader id; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U [ytdl_hook] youtube-dl failed: unexpected error occurred Failed to recognize file format.
要約すると 「アップローダー ID を抽出できない。 yt-dlp -U コマンドで最新バージョンか確認して...」とのこと。原因はバージョンが古いためでした。いろいろ調べたところ解決法が分かったので次のセクションで説明します。
yt-dlpの再インストール
yt-dlpをアンインストール後、GitHubから最新バージョンのバイナリファイルをダウンロードし手動で所定の場所に配置します。以下その手順。
1.debバージョンの yt-dlp を削除
Konsole :
$ sudo apt remove yt-dlp
apt autoremove は行わない。依存パッケージを残す(python3-brotli python3-mutagen python3-websockets)
2.GitHub からバイナリファイル yt-dlp_linux をダウンロードする
3.ファイル名をリネームして実行権を付与する・・・ yt-dlp_linux → yt-dlp
4./usr/binディレクトリに移す
$ sudo mv ~/ダウンロード/yt-dlp /usr/bin/yt-dlp
5.yt-dlpをアップデートする
$ yt-dlp -U
結果: Latest version: stable@2024.04.09 from yt-dlp/yt-dlp yt-dlp is up to date (stable@2024.04.09 from yt-dlp/yt-dlp)
以上。これは Linux Mint Forums や Linux for Devices に掲載されています。
mpv設定ファイル:mpv.conf
mpvの設定ファイル mpv.confは無いので ~/.config/mpv/ に作成します。
Konsole :
$ touch ~/.config/mpv/mpv.conf
下記が今回設定した内容です。
# ビデオ出力 profile=gpu-hq vo=gpu hwdec=nvdec scale=ewa_lanczossharp cscale=ewa_lanczossharp video-sync=display-resample interpolation tscale=oversample # ビデオウィンドウのサイズをビデオサイズの倍数に変更 window-scale=0.5 # 起動時の音量 volume=60 # ビデオがない場合でもビデオ出力ウィンドウを作成 force-window=yes # ウィンドウの境界線と装飾を非表示にしてビデオを再生 border=no # 動画サイズ[MAX1440pの最高画質]の指定 ytdl-format=bestvideo[height<=?1440]+bestaudio/best # ↑をコメントアウトすると最大サイズ、最高画質で再生される
8K動画を再生するなら ytdl-format=…の行は不要です。
その他ビデオフォーマットに関するコマンドのサンプルは次のサイトを参照してください。
下記は mpv-Gentoo Wiki よりの引用です。テンプレートが紹介されていました。
“
mpv のコントリビュータたちの、高度な実世界での設定です: mpv , mpv-config
”
その他参考にしたサイトです
・備忘録
動画再生支援の確認
下の画像は YouTubeの 8K動画タイトル(av1 7680×4320 60fps) を再生したスクリーンショットです。
左の画像が Firefoxで再生したもので GPU温度は30℃で温度上昇はなくCPU使用率は62%(ちなみに Chromiumでは90%)、CPU温度は64℃となりこれが継続します。
右の画像が mvp+yt-dlpでストリーミング再生したもので GPU温度は66℃、CPU使用率は5%、CPU温度は38℃と動画再生支援が効いているのが確認できました。端末からコマンドで起動しているので下記の様に情報が表示されます。
(+) Video --vid=1 (*) (av1 7680x4320 60.000fps) (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz) File tags: Uploader: 8K VIDEOS ULTRA HD Channel_URL: https://www.youtube.com/channel/UC8D_NXFBh8A9KSwo7x-wFdQ Using hardware decoding (nvdec). AO: [pulse] 48000Hz stereo 2ch float VO: [gpu] 7680x4320 cuda[nv12]
下から3行目 Using hardware decoding (nvdec) がそれです。
雑感
これまでメディアプレイヤーと言えばVLCとSMPlayerしか使ってこなかったが今回mpvを使ってみてかなり気に入ってしまった。なにが良いってメニューバー、ステータスバーを簡単なコード「border=no」たったこれだけで非表示に出来るところ。
画面キャプチャーした動画の枠消しクロップ作業の手間が省ける~
X.orgをWaylandへ切り替える
ページ冒頭で nvidiaドライバを使用するとディスプレイサーバは X.org 一択になると書きましたが Waylandセッションに切り替える方法があるようです。
$ sudo nano /etc/default/grub
nano :
GRUB_CMDLINE_DEFAULT="quiet splash"
↓
GRUB_CMDLINE_DEFAULT="quiet splash nvidia-drm.modeset=1"
$ sudo update-grub
PCを再起動後ログイン画面の右下に歯車アイコンが現れ、Weylandセッションを選択出来るようです。
ただし、いろいろ未知の問題があるようで 日経XTECHに記事(要ユーザー登録)がありました。もちろん試していませんけど。