快轉到主要內容

即時補幀提昇動畫影片FPS ~ Linux版MPV播放器+Vapoursynth MVTools設定教學

Linux系統 Linux好用軟體 MPV AI Anime Linux
✍ 切換正體/簡體字
Ivon Huang
作者
Ivon Huang
目錄

解說如何在Linux系統設定MPV,配合Vapoursynth的MVTools插件達到即時補幀效果,類似Windows上的mpv-lazy那樣。

不知何為補幀?請看這部影片補幀後的效果:

後面再教學如何配合動畫升頻軟體Anime4K一同使用,操爆電腦硬體。

1. 概述與本文目標 #

即時補幀(補畫格,real time interploation,motion interpolation)即在播放影片的時候將影片FPS提高(如30 FPS → 60 FPS),而不用像RIFE那樣需要等整部影片轉檔完成。

目前影片補幀的方案主要有:Vapoursynth MVTools(開源)、RIFE(開源)、DAIN(開源)、SVP(閉源)、DmitriRender(閉源)

Vapoursynth是一款開源的伺服器幀渲染軟體,為AviSynth的後繼者。可以用來處理影片轉檔,配合MPV播放的話即是套用其濾鏡(由插件提供)來改善影片品質,例如本文主角"MVTools",專門給影片插幀/補幀用的。

MVTools與同為補幀軟體的RIFE ( RIFE使用教學) 有什麼差呢?MVTools能在播放中給影片補幀,全靠CPU運算,雖然耗CPU資源但速度還能接受;相較之下,RIFE預設得將整部影片用GPU轉檔才能看。雖然有人嘗試將RIFE作為即時補幀插件(見 VapourSynth-RIFE-ncnn-Vulkan),但仍需要RTX等級的顯示卡才不會卡頓,對一般使用者來說要求過高。(我是窮鬼)

儘管RIFE可能是目前效果最好的開源補幀演算法了,但MVTools的補幀其實也沒到很差勁的地步,只比專有軟體SmoothVideoProject差些,所以就將就看吧。

整合補幀技術的播放軟體,最著名的專案便是 mpv-lazy了,開發者將Anime4K和MVTools內建,使用者不需要手動設定便可使用。不過該軟體因為將一堆靜態執行檔包在一起,只支援Winodws版本,Linux雖然也有原生MPV但需要手動設定一些東西。

那麼,我們不妨將目標簡化:只要能在Linux播放影片時,補幀到60FPS+提昇畫質即可,所以我們就來手動設定吧。

2. 安裝必要套件 #

  • 系統:Arch Linux
  • CPU:Intel I5-7400
  • GPU:Nvidia GTX1050Ti (安裝閉源驅動)
  • 系統Python版本:3.11.3
  • Vapoursynth版本:R63

  1. 首先需要安裝啟用VapourSynth的套件,Arch Linux預設的mpv套件無此選項,故需要從AUR安裝特別版mpv-vapoursynth-git
sudo pacman -R mpv
yay -S mpv-vapoursynth
  1. 接著安裝mvtools,它的函式庫位於/usr/lib/vapoursynth
sudo pacman -S vapoursynth-plugin-mvtools
  1. MVTools補幀需要自行撰寫指令稿來啟用。Github上有 KCCat phiresky的範本,我選擇後者提供的.vpy檔案
mkdir ~/.config/mpv
cd ~/.config/mpv
wget https://gist.githubusercontent.com/phiresky/4bfcfbbd05b3c2ed8645/raw/d2431bc64b2cff0c80c5953bca71968dcdf82971/motioninterpolation.vpy
  1. phiresky的vpy有點小問題,請開啟該檔案,找到vapoursynth.get_core()的字串,將其替換成vapoursynth.core

3. 撰寫MPV設定檔啟用mvtools #

  1. 編輯~/.config/mpv/mpv.conf,填入最基本的播放參數
keep-open=yes
sub-auto=fuzzy
hwdec-codecs=all
profile=gpu-hq
  1. 編輯~/.config/mpv/input.conf,填入開關Vapoursynth濾鏡的快捷鍵,我設定為「b」。等號後面的路徑是剛才下載的vpy檔案的位置。
b vf toggle vapoursynth=~~/motioninterpolation.vpy
  1. 如果您想要一開啟MPV就自動啟用補幀功能,在~/.config/mpv/mpv.conf加入以下內容:
vf=format=yuv420p,vapoursynth=~~/motioninterpolation.vpy:4:4
  1. 接著在檔案管理器使用MPV播放一部非60FPS的影片

  2. 按Shift+I,顯示目前影片幀率

  3. 按b啟用補幀功能,繼續播放,觀察幀率是否有變化

4. 配合Anime4K升頻軟體使用 #

Anime4K是提昇動畫畫質(升頻)的軟體,可將720p變1080p,1080p變接近4K。

  1. 請參考 Linux版Anime4K教學,將Anime4K的快捷鍵設定好。如果要跟Vapoursynth一起用的話,沿著~/.config/mpv/mpv.conf的設定檔直接往下寫就好了,例如:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A (Fast)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B (Fast)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C (Fast)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A+A (Fast)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B+B (Fast)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C+A (Fast)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

b vf toggle vapoursynth=~~/motioninterpolation.vpy
  1. 同樣,如果您希望一啟動MPV便自動啟用Anime4K的A+A模式,那就把以下內容加到~/.config/mpv/mpv.conf尾端
glsl-shaders="~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

5. 播放MVTools+Anime4K影片有多耗系統資源 #

以下是播放普通1080p影片,什麼都沒開的情況

接著是啟用補幀+Anime4K的影片,可以看到GPU和CPU使用率都暴漲。

如同RIFE,Vapoursynth的MVtools也可以給影片補幀轉檔,減少播放時的開銷:

vspipe --arg in_filename="影片路徑" --arg display_fps=60 --y4m motioninterpolation.vpy -| ffmpeg -i - -crf 18 output.mkv

參考資料 #

相關文章

一鍵提昇動漫影片畫質 ~ Linux/Android版的Anime4K使用教學
Linux系統 Linux好用軟體 MPV AI Anime
Imgbrd Grabber,大量下載Danbooru動漫圖片的好用APP
Linux系統 Linux好用軟體 Linux Android Anime
免安裝iTunes,Linux系統連接iPhone傳照片、備份系統、DFU重置系統的方法
Linux系統 Linux好用軟體 Linux iOS Jailbreak

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。