Linux RIFE视频实时补帧教程
AlmeasqViolet
编辑于 2026年08月09日 17:17

RIFE在Linux下好像并没有什么现成的方案,除了付费的SVP可以使用RIFE简单地实时补帧,现有的教程好像也很少,正好我最近配置好了RIFE,写一篇教程送给还在思考要怎么配置RIFE的各位。内容是根据个人经验所写,如果有什么地方错误,请指正,谢谢。

如果是N卡,那么在Linux上的RIFE性能是会有一定提升的,根据我的测试,RTX4060在windows下使用mpv_PlayKit最高只能运行RIFE4.25lite,而在linux下使用我的配置文件可以运行RIFE4.26,具体提升幅度,个人预估可能有25%。 而AMD显卡对比Windows则是会大幅下降性能,如果你的显卡低于RX7900GRE,那么在Linux上配置RIFE可能并不是那么的合适。 所以如果你的显卡是A卡,并且追求性能,那么可以去考虑windows平台下hooke007大佬的mpv_PlayKit。 具体原因根据我参考github资料,推测是因为hooke007大佬配置的DX API的RIFE是支持FP16的,而Linux是不支持DX的,但VK API的RIFE插件似乎目前并不支持FP16,所以Windows平台的RIFE性能是Linux平台RIFE的两倍多。 I卡我有一张A750但是没有进行配置和测试,具体怎么样配置各位可以去自行探索。

代码块
PlainText
自动换行
复制代码
https://github.com/hooke007/mpv_PlayKit
复制成功

我使用的是ArchLinux,其他Linux发行版的操作可能有所不同,但应该可以当作参考。

本教程只包含如何在Linux下配置RIFE,更多的其他的内容在本教程并不会看到。如果你想通过快捷键来控制RIFE的开启停止,又或者是修改mpv.conf来提升RIFE的性能,那么请参考其他的教程。

关于性能消耗,根据我的实测,可能并不严谨,但希望可以起到参考。

RTX4060 RIFE 4.26 24>48

RX7700XT RIFE 4.26 24>6~12

RX7900XT RIFE4.26 24>40~48


我目前所了解的使用RIFE的方法主要是通过VapourSynth插件实现,接下来的方法也都围绕VapourSynth插件。

如果你的显卡是N卡20系及以上,可以使用"vs-mlrt"。

如果你的显卡是I卡A380及以上,也可以考虑使用"vs-mlrt",并安装OpenVINO及相关依赖。

代码块
JavaScript
自动换行
复制代码
https://github.com/AmusementClub/vs-mlrt
复制成功

如果你的显卡是AMD显卡,可以使用"VapourSynth-RIFE-ncnn-Vulkan"。

"vs-mlrt"实际上也支持AMD的"MIGX",但是我在github上提过一个issue,开发者表示"MIGX"的目前并不支持"RIFE"。

代码块
JavaScript
自动换行
复制代码
https://github.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan
复制成功

vs-mlrt(N卡参照此处)

1、安装所需软件

安装paru

代码块
PlainText
自动换行
复制代码
sudo pacman -S paru
复制成功

安装MPV(系统更新常常会导致依赖变动,若按教教程配置后无效,请尝试mpv-full、mpv-full-git、mpv-full-build-git)

代码块
PlainText
自动换行
复制代码
paru -S mpv
复制成功

安装TensorRT

代码块
PlainText
自动换行
复制代码
paru -S tensorrt
复制成功

安装VS滤镜

代码块
PlainText
自动换行
复制代码
paru -S vapoursynth
复制成功

下载VS插件

代码块
PlainText
自动换行
复制代码
paru -S vapoursynth-plugin-mlrt-trt-runtime-git
复制成功

安装RIFE模型包

代码块
PlainText
自动换行
复制代码
paru -S vapoursynth-plugin-mlrt-ext-models-rife
复制成功

2、编辑配置文件

编辑RIFE的VS滤镜

代码块
PlainText
自动换行
复制代码
sudo nano ~/.config/mpv/vs/rife.vpy
复制成功

输入以下内容

代码块
PlainText
自动换行
复制代码
import vapoursynth as vs
from vapoursynth import core
import vsmlrt

clip = video_in

#向上取整:1920*1080>===>1920*1088
w, h = clip.width, clip.height
w = ((w + 63) // 64) * 64
h = ((h + 63) // 64) * 64
#向下取整:1920*1080>===>1920*1024
#w, h = clip.width, clip.height
#w = (w // 64) * 64
#h = (h // 64) * 64

clip = core.resize.Bicubic(
    clip, 
    width=w, 
    height=h, 
    format=vs.RGBS,
    matrix_in_s="709"
)

clip = vsmlrt.RIFE(
    clip,
    model=46,
    multi=2,
    backend=vsmlrt.Backend.TRT(
        device_id=0,
        workspace=None,
        engine_folder="/home/username/.cache/vsmlrt",
        num_streams=4,
        max_aux_streams=2,
        fp16=True,
        force_fp16=True,
        use_cuda_graph=True,
        #use_cublas=True,
        #use_cudnn=True,
        #use_edge_mask_convolutions=True,
        #use_jit_convolutions=True,
        #static_shape=True,
        #heuristic=True,
        #short_path=True,
        #builder_optimization_level=5,
        #tiling_optimization_level=2,
    )
)

clip = core.resize.Bicubic(
    clip, 
    format=vs.YUV420P10,
    matrix_s="709"
)

clip.set_output()

#模型版本
#补帧倍速
#使用的后端
#使用的显卡序号:0=第一张显卡
#分配显存的大小:None=自动
#编译完成的模型的保存路径
#显卡线程数:1~8
#最大辅助流数:1~8
#是否使用fp16加速:提升性能但会轻微降低质量
#强制使用fp16精度
#是否使用cuda加速
#是否使用cuBLAS库:优化矩阵运算
#是否使用cuDNN库:优化卷积神经网络
#是否使用边缘掩码卷积:降低性能但减少模糊和重影
#是否使用即时编译卷积:提升性能但会增加编译时间
#是否使用静态形状:提升性能但会增加编译时间
#是否使用启发式算法:TRT自动选择最佳算法
#是否使用短路径优化:减少重复计算
#构建器优化等级:0~5
#平铺优化等级:0~2

#查看模型列表
#python3 -c "import sys;sys.path.append('/usr/lib/vapoursynth');import vsmlrt;[print(f'{m.value:>4} = {m.name}') for m in vsmlrt.RIFEModel]"

#查看后端列表
#python3 -c "import sys; sys.path.append('/usr/lib/vapoursynth'); import vsmlrt; print(*[b for b in dir(vsmlrt.Backend) if not b.startswith('_')], sep='\n')"
复制成功

编辑mpv.conf

代码块
PlainText
自动换行
复制代码
sudo nano ~/.config/mpv/mpv.conf
复制成功

输入以下内容

代码块
PlainText
自动换行
复制代码
[rife]
profile-cond=height <= 1080 and container_fps <= 24
vf=vapoursynth="~~/vs/rife.vpy"
correct-pts=yes
hr-seek=yes
hr-seek-framedrop=no
#在满足"高度<=1080"并且"帧率<=24"的情况下自动开启
#加载vf滤镜脚本
#是否修正时间戳
#是否开启高精度跳转
#是否在跳转时丢帧
复制成功

VapourSynth-RIFE-ncnn-Vulkan(A卡参照此处)

1、安装所需软件

安装paru

代码块
Python
自动换行
复制代码
sudo pacman -S paru
复制成功

安装MPV(系统更新常常会导致依赖变动,若按教教程配置后无效,请尝试mpv-full、mpv-full-git、mpv-full-build-git)

代码块
Python
自动换行
复制代码
paru -S mpv
复制成功

安装VS滤镜

代码块
Python
自动换行
复制代码
paru -S vapoursynth
复制成功

下载VS插件

代码块
Python
自动换行
复制代码
paru -S vapoursynth-plugin-rife-ncnn-vulkan
复制成功

2、编辑配置文件

编辑RIFE的VS滤镜

代码块
Python
自动换行
复制代码
sudo nano ~/.config/mpv/vs/rife.vpy
复制成功

输入以下内容

代码块
Python
自动换行
复制代码
import vapoursynth as vs
from vapoursynth import core

clip = video_in

#向上取整:1920*1080>===>1920*1088
w, h = clip.width, clip.height
w = ((w + 63) // 64) * 64
h = ((h + 63) // 64) * 64
#向下取整:1920*1080>===>1920*1024
#w, h = clip.width, clip.height
#w = (w // 64) * 64
#h = (h // 64) * 64

clip = core.resize.Bicubic(
    clip, 
    width=w, 
    height=h, 
    format=vs.RGBS,
    matrix_in_s="709"
)

clip = core.rife.RIFE(
    clip,
    model=23,
    factor_num=2,
    gpu_id=0,
    gpu_thread=4, 
    tta=False,
    uhd=False,
    sc=False,
    skip=False,
    skip_threshold=60
)

clip = core.resize.Bicubic(clip, format=vs.YUV420P10, matrix_s="709")

clip.set_output()

#模型版本
#补帧倍速
#使用的显卡序号:0=第一张显卡
#显卡线程数:1~8
#是否使用tta:对每帧进行8次不同变换处理,然后取平均值
#是否使用场景检测
#是否跳过插入静态帧(需要 VMAF 插件)
#跳过插入静态帧的检测阈值:默认60

#查看插件github页面
#https://github.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan
复制成功

编辑mpv.conf

代码块
Python
自动换行
复制代码
sudo nano ~/.config/mpv/mpv.conf
复制成功

输入以下内容

代码块
Python
自动换行
复制代码
[rife]
profile-cond=height <= 1080 and container_fps <= 24
vf=vapoursynth="~~/vs/rife.vpy"
correct-pts=yes
hr-seek=yes
hr-seek-framedrop=no
#在满足"高度<=1080"并且"帧率<=24"的情况下自动开启
#加载vf滤镜脚本
#是否修正时间戳
#是否开启高精度跳转
#是否在跳转时丢帧
复制成功

结束,各位成功在Linux上配置RIFE了吗?

最后放几张我的截图。

无头骑士异闻录

恶魔之谜

碧蓝档案