見出し画像

【上級】SmoothVideo Project on Linux & smplayer を使っている話【フレーム生成】


はじめに

SmoothVideo Project(SVP)は、動画のフレームレートをリアルタイムで変換し、滑らかな視聴体験を実現するソフトウェアです。従来の24fps動画を60fpsや120fpsに変換することで、カクつきや残像を低減し、より自然で滑らかな映像にする事ができます。リアルタイムで視聴する以外にも、変換して保存する事も可能です。

似たような技術には、NVIDIA DLSS-3 や AMD FSR-3 があります。ただしこれらはゲーム用途に限定したもので、一部 PowerDVD などの Windows 向け市販の動画プレイヤーで利用可能ですが、まだ一般的ではないようです。また、動画再生のフレーム補間機能は、一般家庭テレビ用も含めてかなり昔からありましたが、筆者が利用した事のあるものはすべて貧弱で、あまり有用だと感じた事はありませんでした。しかし、SVP は非常に優秀で、明らかに滑らかになっている事が確認できます。特に、120Hz以上のゲーミングディスプレイで 60fps→120fps 変換を行うと、アーティファクトがほとんど発生しないため、大きな恩恵を受ける事ができます。※ ゲーミングディスプレイをゲーム以外で活用できます

Windows 版 SVP は有料ソフトウェアですが、Linux 版は無料で利用する事ができます。最近久々の Linux 版アップデートがあったため、紹介記事を書きたいと思います。

Windows に比べると、Linux は動画や音楽再生の分野で貧弱なイメージがありますが、実はそんな事はありません。商用ソフトウェアが皆無であり、設定や導入が面倒である事は事実ですが、かなり充実しています。

SVPとは

左:オリジナル、右:SVP

フレーム補間とは、単純にフレーム前後の画像のピクセルを平均するのではなく、動き予測に基づく補間を行うため、流れのある動画ほど精度が良くなります。もちろん、それなりに計算コストが必要なものですので、強力な CPU または GPU が必要になります。GPU を利用する場合は OpenCL か Turing 以降の Encoder 機能を選べます。(動画エンコーダーの処理は、動き予測そのものですので)

ただし、強力なCPUと言っても、筆者の旧型CPU i7-6700 + GTX 1660 ti GPU でも 1080p 動画 60fps→120fps 変換が可能です。

SVP 公式ページはこちら

smplayer (mpv) 導入

SVP はフレーム補間のみを行う裏方として動作するバックエンドです。VLC や mpv などのプレイヤーで利用する事ができます。

この記事では mpv 系の動画プレーヤである smplayer を利用します。つまり、利用するには SVP と smplayer(mpvエンジン) の導入が必要になります。

そして、何が面倒【上級】なのかと言うと、SVP 対応の mpv コマンドを自分でビルドしなければならない事です

筆者環境 Linux Mint 21.3 x86_64 での導入手順です。

公式に手順が記載されています。

まずは、最新版の smplayer のインストールです。PPAを登録し、apt コマンドでプレイヤーをインストールします。

sudo add-apt-repository ppa:rvm/smplayer 
sudo apt-get update 
sudo apt-get install smplayer smplayer-themes smplayer-skins

次に非常に面倒な「ビルド」を行います。最終目標は Vapoursynth を有効化した mpv のビルドなのですが、そのために、幾つか手順が必要になります。

(コンパイル等を行うための)ビルドツールをインストールします。

sudo apt-get install g++ make autoconf automake libtool pkg-config nasm git meson

作業ディレクトリを作って、各種ライブラリ をビルド+インストールします。

#zimg
git clone --branch release-3.0.5 https://github.com/sekrit-twc/zimg.git
cd zimg   
./autogen.sh
./configure
make -j4
sudo make install
#cython3
sudo apt-get install cython3
# build Vapoursynth
cd ..
git clone --branch R66 https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make -j4
sudo make install
cd ..

動作時に Python がモジュールを読み込めるように、リンクを作ります。

sudo ln -s /usr/local/lib/python3.10/site-packages/vapoursynth.so /usr/lib/python3.10/lib-dynload/vapoursynth.so

想定通り動作しているかチェック(公式ドキュメントでは --version が抜けています)エラーがなければOKです。

vspipe --version

本命の mpv ビルドを行います。まずは、ビルドツールです。

sudo apt-get install libssl-dev libfribidi-dev libharfbuzz-dev libluajit-5.1-dev libx264-dev xorg-dev libxpresent-dev libegl1-mesa-dev libfreetype-dev libfontconfig-dev libffmpeg-nvenc-dev libva-dev libdrm-dev libplacebo-dev
sudo apt-get install libasound2-dev libpulse-dev

念の為です。(python3 をデフォルトにする)

sudo apt-get install python-is-python3

mpv-build という github に登録されているスクリプトがあるので、それを利用して mpv をビルドします。ffmpeg は最新のリリースバージョンを利用するという意味です。

git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
./use-ffmpeg-release

ffmpeg と mpv のビルド用のオプションを設定して、ビルドします。

echo --enable-libx264 >> ffmpeg_options
echo --enable-nvdec >> ffmpeg_options
echo --enable-vaapi >> ffmpeg_options
echo -Dvapoursynth=enabled >> mpv_options
echo -Dlibmpv=true >> mpv_options

./rebuild -j4 を実行すれば、ビルドが始まりますが、 Linux mint 21.3 では失敗します。理由は、Python ビルドツールの meson のバージョンが上手くいかないためです。そこで、おなじみの「Python 仮想環境」です。Python の仮想環境はAI専用ではありません。さまざまな用途で役に立ちます。

Anaconda を利用(Linux版 Anaconda のインストールが必要です)して、最新の meson 利用するビルド専用の仮想環境を作ります。仮想環境を有効化して、最新の meson を導入します。

conda create -n mpv-build python=3.10
conda activate mpv-build
pip install -U meson

最新の meson が導入できれば、mpv のビルドを行います。

./rebuild -j4
conda deactivate

エラー無く終了すれば、ビルドは完了です。仮想環境も抜けておきます。

make install などでシステムへ上書きインストールすると、他の mpv を利用するソフトウェアに影響してしまうので、手動でインストールします。

(smplayerで利用する場合)mpv はバイナリファイル一つだけです。ビルドで生成した ./mpv/build/mpv のファイルを好きな場所にコピーするだけです。一般的な /usr/local/bin へコピーしましょう。

cp -i ./mpv/build/mpv /usr/local/bin/

これで SVP 対応の mpv ビルドは終了です。

SVP の導入

SVP 公式ページから Linux 版をダウンロードします。ダウンロードファイルを回答すると svp4-linux-64.run ファイルが生成されるので、それを実行します。

./svp4-linux-64.run

デフォルトの値で進めると、ホームディレクトリに「SVP 4」ディレクトリが作成され、そこにインストールされます。デスクトップ用のランチャーも登録されるので、svp とメニューで検索すると表示されます。

SVP 4 Linux

実行すると、デスクトップ右下のシステムトレイに SVP アイコンが表示されるようになります。ダブルクリックすると、コントロールパネルが表示されます。

SVP Control Panel

これで SVP のインストールは終了です。

smplayer の設定

メニューの「オプション」→「環境設定」で、利用する mpv バイナリの場所を指定します。

smplayer 設定 ①

mpv オプションを入力します。

smplayer 設定 ②

これで smplayer の設定は終了です。

動作チェック

SVP が起動している(デスクトップ右下のシステムトレイにアイコンが表示されている)間は、常に SVP が有効になります。

SVP 動作チェック

smplayer の動作中に「Shift + i 」のショートカットを押すと、再生情報がオーバーレイ表示されます。中程に Filters vapoursynth 表示があれば正常に動作している事を表しています。また、Dropped Frames が増えるようであれば、SVP コントロールパネルの画質を調整してみてください。コントロールパネルの左下「Automatic」と表示されている場所が、現在利用のプロファイルになります。

DVDやネット動画の再生

様々な議論があるため、使用を推奨するものではありませんが、smplayer はlibdvdcss や yt-dlp を利用した YouTube 動画を再生する事が可能です。つまり、smplayer で再生できるものはすべて SVP の恩恵を受ける事ができます。

動画変換

SVP コントロールパネルの「Transcoding」を利用すると、fpsを増やした動画を保存する事も可能です。


この記事が気に入ったらサポートをしてみませんか?