本文Ivon講解如何在Linux安裝RIFE,使用RIFE轉檔。
轉檔方法分為官方Python程式以及VapourSynth兩種。
Youtube上常會看到一些4K60p的動畫片頭曲影片,明明原廠沒有提供那麼高畫質,那他們的片源是哪來的呢?八成是自己轉的,這個技術稱為動畫補幀(video frame interpolation),由電腦演算出每幀(畫格)之間缺少的幀,使動畫變得很流暢的手法。
說到能作到動畫補幀的軟體,不妨試試「RIFE」吧,這是旷视研究院在論文 Real-Time Intermediate Flow Estimation for Video Frame Interpolation所提出的影片補幀方法。
RIFE研究者所提供的程式可以將影片轉檔,將FPS補幀成任意速度,例如將30FPS影片變成120FPS,呈現的畫面品質比 MPV + MVtools要好。用RIFE補幀後,再配合 MPV +Anime4K或ESRGAN這類放大影片的軟體,就能將任何一部影片變成4K60p的豪華內容。
例如下面這部強襲魔女的影片所示,30FPS → 60FPS
1. 安裝RIFE#
RIFE的演算法有很多圖形前端,像Flowframes、SVFI、Waifu2x-Extension-GUI等,方便使用者轉檔。不過那些圖形前端只有Windows版,對Linux用戶來說幾乎無用,所以Linux用戶只能用RIFE指令轉檔了,好在過程並不複雜。
- 安裝 Anaconda,建立Python3.8環境:
conda create --name rife python=3.8
conda activate rife
- 複製RIFE儲存庫
git clone [email protected]:megvii-research/ECCV2022-RIFE.git
cd ECCV2022-RIFE
- 安裝依賴套件。
pip install -r requirements.txt
- numpy可能需要降級為1.20.0版本,否則會出現
'numpy' has no attribute 'float'
錯誤。
pip install numpy==1.20.0
- 下載
RIFE模型v3.6,解壓縮,將
train_log
放到RIFE儲存庫的目錄。
2. RIFE轉檔指令#
在RIFE儲存庫目錄開啟終端機,並進入Python虛擬環境後,使用此指令給影片轉檔:
python3 inference_video.py --exp=<影片速率> --video="影片.mp4"
--exp
為影片速率,1為二倍,2為4倍,以此類推。影片轉檔前可用VLC的檢視→媒體訊息確認影片的FPS確切數值。
例如要把30FPS的影片轉換成為60FPS:
python3 inference_video.py --exp=1 --video="video.mp4"
實測顯示卡為GTX1050Ti,10秒鐘的1080p30影片轉檔成1080p60需要5分鐘。
轉檔後的影片會位於跟輸入影片的同個目錄,檔案大概會變成二倍大。
3. 使用VapourSynth濾鏡來補幀轉檔#
安裝 VapourSynth-RIFE-ncnn-Vulkan插件。Arch Linux可以透過AUR安裝。
開啟VapourSynth Editor,輸入以下指令稿
from vapoursynth import core
import vapoursynth as vs
# 輸入影片
clip = core.bs.VideoSource(source='input.mkv')
# 轉成RGBS
clip = core.resize.Bicubic(clip, format=vs.RGBS, matrix_in_s='709')
# 使用RIFE處理影片,詳細函數用法看插件作者的Github
clip = core.rife.RIFE(clip)
# 轉回Y4M
clip = core.resize.Bicubic(clip, format=vs.YUV420P8, matrix_s="709")
clip.set_output()
- 點選 Scripts → Encode Video,Header選取Y4M,執行檔選取ffmpeg,ffmpeg輸出參數設定為
-i - 路徑/output.mkv