iT邦幫忙

2026 iThome 鐵人賽

DAY 6
1
自我挑戰組

一天一招,快速上手 mpv-lazy系列 第 6

Day 6:NVIDIA 怎麼同時用 AI 超分 + AI 補幀(RIFE)

  • 分享至 

  • xImage
  •  

前兩天我們只能從選單裡選,同一時間只能開超分或補幀其中一個,今天要教大家怎麼兩個一起開。
https://ithelp.ithome.com.tw/upload/images/20260806/20182793gR4crQ5dpw.jpg

先超分還是先補幀?

為什麼是先放大後補幀?補幀往往帶來幀破損,放大在後處理會放大這種瑕疵(所以這只是基於質量優先的考慮而不是速度)

參考:vpy 的設計與最佳化思路 · hooke007/mpv_PlayKit · Discussion #313

實測下來,先放大再補幀的畫質確實比較好,RIFE 產生的偽影也比較少,所以推薦這樣用。通常 AI 會給你建議先補幀再拉升,我實測下來會偽影會比較嚴重,所以還是先放大再補幀會比較好。

可以參考下面的腳本。檔案命名為 k7f_zen.vpy,放在 \mpv-lazy\portable_config 裡。

import vapoursynth as vs
from vapoursynth import core
import k7sfunc as k7f
clip = video_in
if clip.height < 2160 * 0.85 :
    clip = k7f.FMT_CTRL(clip, h_max=720)
    clip = k7f.UAI_NV_TRT(clip, model_pth="the_database_AnimeJaNaiV2L1_x2_fp16_op17.onnx", fp16_qnt=True, gpu=0, gpu_t=2, st_eng=True)
    clip = k7f.FMT_CTRL(clip, h_max=2160)
if container_fps <= 32 :
    clip = k7f.FMT_CTRL(clip, h_max=2160)
    clip = k7f.RIFE_NV(clip, model=46, fps_in=container_fps, fps_num=2, gpu=0, gpu_t=2)
if not (clip == video_in) :
    clip.set_output()

如果想讓設定永久生效,在 mpv.conf 最後面加上下面這行,之後打開影片就會自動執行腳本:

vf=vapoursynth="~~/k7f_zen.vpy"

為了讓大家順利跑,照著原本預設配置。這邊每個人效能都不一樣需要手動調整。用 shift+i 查看 DROP Frame 有沒有持續升高,假如有必須在解析度、補幀做一個取捨。

我的配置

我個人偏好超分優先。雖然 RIFE 我喜歡開 3 倍,但為了讓電腦能順利播放,我把補幀前的畫面高度限制在 950,RIFE 倍數也改成 2 倍,這樣才不會掉幀。

我這邊做了一個簡單的快速編輯網址:連結

右邊選結果,直接改左邊變數,可以從右邊進行複製動作。

說明:

data:
  - 螢幕大小: 2160            # 4K;理論上超過螢幕解析度後,再超分也沒意義
    補幀畫面大小限制: 950      # 現在片源大多是 1080p,超分後會變成 4K;官方預設是 720p,超分後大約是 2K
    補幀倍數: 2
    超分模型: the_database_AnimeJaNaiV2L1_x2_fp16_op17.onnx  # 可以看 mpv-lazy\vs-plugins\models 裡有哪些模型

以下是我的配置:

import vapoursynth as vs
from vapoursynth import core
import k7sfunc as k7f
clip = video_in
if clip.height < 2160 * 0.85 :
    clip = k7f.FMT_CTRL(clip, h_max=950)
    clip = k7f.UAI_NV_TRT(clip, model_pth="the_database_AnimeJaNaiV2L1_x2_fp16_op17.onnx", fp16_qnt=True, gpu=0, gpu_t=2, st_eng=True)
    clip = k7f.FMT_CTRL(clip, h_max=2160)
if container_fps <= 32 :
    clip = k7f.FMT_CTRL(clip, h_max=2160)
    clip = k7f.RIFE_NV(clip, model=46, fps_in=container_fps, fps_num=2, gpu=0, gpu_t=2)
if not (clip == video_in) :
    clip.set_output()

其實官方有出 [Lua] k7f_zen “要是連這個都不會用,就別問 vs 濾鏡怎麼玩了” · hooke007/MPV_lazy · Discussion #574,本來想帶大家走一遍。不過我還是希望大家能快速上手,就直接把設定貼給你們用;真的有興趣的話,我後面幾天再詳細講解。

其實前幾天內容我還是覺得寫有點多,但不寫又感覺不完整,原本目標是大家一篇一分鐘可以做完😅。


上一篇
DAY5:AMD 補幀(AFMF)方式
下一篇
Day 7:AMD 怎麼用 AI 超分 + 補幀(AFMF)
系列文
一天一招,快速上手 mpv-lazy18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言