![見出し画像](https://assets.st-note.com/production/uploads/images/138114302/rectangle_large_type_2_6cc53b8e1b7eeb3202e46e17a69a3f9f.png?width=1200)
【上級】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とは
![](https://assets.st-note.com/production/uploads/images/138064043/picture_pc_52697036edb1845800cdb8e66db16220.gif?width=1200)
フレーム補間とは、単純にフレーム前後の画像のピクセルを平均するのではなく、動き予測に基づく補間を行うため、流れのある動画ほど精度が良くなります。もちろん、それなりに計算コストが必要なものですので、強力な 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 とメニューで検索すると表示されます。
![](https://assets.st-note.com/img/1713761676144-h7myjY2fKQ.png?width=1200)
実行すると、デスクトップ右下のシステムトレイに SVP アイコンが表示されるようになります。ダブルクリックすると、コントロールパネルが表示されます。
![](https://assets.st-note.com/img/1713761813200-fLcXN0lzaL.png)
これで SVP のインストールは終了です。
smplayer の設定
メニューの「オプション」→「環境設定」で、利用する mpv バイナリの場所を指定します。
![](https://assets.st-note.com/img/1713762160463-bvPAODm1Ma.png?width=1200)
mpv オプションを入力します。
![](https://assets.st-note.com/img/1713762217169-Fn0HOJ0d0r.png?width=1200)
これで smplayer の設定は終了です。
動作チェック
SVP が起動している(デスクトップ右下のシステムトレイにアイコンが表示されている)間は、常に SVP が有効になります。
![](https://assets.st-note.com/img/1713762564190-gGLnTlcsLX.png?width=1200)
smplayer の動作中に「Shift + i 」のショートカットを押すと、再生情報がオーバーレイ表示されます。中程に Filters vapoursynth 表示があれば正常に動作している事を表しています。また、Dropped Frames が増えるようであれば、SVP コントロールパネルの画質を調整してみてください。コントロールパネルの左下「Automatic」と表示されている場所が、現在利用のプロファイルになります。
DVDやネット動画の再生
様々な議論があるため、使用を推奨するものではありませんが、smplayer はlibdvdcss や yt-dlp を利用した YouTube 動画を再生する事が可能です。つまり、smplayer で再生できるものはすべて SVP の恩恵を受ける事ができます。
動画変換
SVP コントロールパネルの「Transcoding」を利用すると、fpsを増やした動画を保存する事も可能です。
![](https://assets.st-note.com/img/1713763396535-MuHP61K3Cc.png)