AI 补帧:RIFE 2× 与光流 minterpolate
为什么要补帧
帧率翻倍(比如 30fps → 60fps)在视频创作里是一个常用技巧:
- 慢动作更平滑(24fps 电影通过补帧变 48fps 流畅慢放);
- 定格动画或时间推移(timelapse)可以更顺滑;
- 游戏录制素材(原神、赛博朋克这类 30fps 游戏)补到 60fps 观感大幅提升。
补帧(Frame Interpolation)的核心思路是:在两个相邻的真实帧之间,用算法合成一到多帧"中间帧"。
ZenConverter 提供两条路线:一条深度学习,一条传统光流。
RIFE 2×:Tencent NCNN Vulkan
RIFE(Real-Time Intermediate Flow Estimation)是清华团队的光流神经网络模型,可以实时做视频补帧。ZenConverter 把它移植到了 Tencent NCNN 推理框架上,用 Android GPU 的 Vulkan 加速。
技术栈
- 模型:RIFE 2×(把帧率翻倍);
- 推理引擎:Tencent NCNN,GPU 后端走 Vulkan;
- 模型加载:persistent session lifecycle(避免每帧都 reload 模型,减少 IO 开销);
- 高分辨率自适应:1080p+ 自动下采样到中间分辨率推理,再上采样回原分辨率,减轻显存压力。
为什么标"实验性"
RIFE 路线在 README 里被归为"实验性",原因是移动端芯片的 GPU 驱动和显存调度差异很大:
- 某些老旧的骁龙 855/865 设备可能不支持 NCNN Vulkan;
- 某些联发科芯片的 Vulkan 驱动有 bug,推理会直接崩溃;
- 显存不够时会触发 Android 的 Low Memory Killer,直接杀掉进程。
如果你的设备 RIFE 跑不起来,应用不会假装成功——会明确报 Vulkan 初始化失败或模型加载失败。
模型下载
RIFE 模型需要从 GitHub Releases 下载(约 XX MB),下载完成后用 SHA-256 校验,确认和官方一致才加载。不需要网络时不能使用 AI 补帧(模型没下载)。
FFmpeg minterpolate 光流 2×(v0.2.4 新增)
FFmpeg 内置的 minterpolate 滤镜也能做补帧,原理是传统光流算法(Sobel + Lucas-Kanade)而不是深度学习。v0.2.4 版本新增了这条路线,作为 RIFE 的补充。
对比 RIFE
| 对比项 | RIFE 2×(NCNN Vulkan) | minterpolate(FFmpeg) |
|---|---|---|
| 引擎 | Tencent NCNN | FFmpeg 兼容路线 |
| 模型依赖 | 需要下载 AI 模型 | 不需要,FFmpeg 内置 |
| GPU 依赖 | Vulkan | 可纯 CPU 跑 |
| 画质 | 深度学习,边缘处更准 | 光流算法,运动模糊或遮挡处有残影 |
| 速度 | GPU 加速很快 | CPU 跑较慢 |
| 稳定性 | 实验性(依赖 Vulkan 驱动) | 稳定(FFmpeg 兼容路线) |
怎么选:设备支持 Vulkan 且你追求画质 → 选 RIFE;设备 Vulkan 有问题或你不想下载模型 → 选 minterpolate。
与视频输出管线的关系
补帧路线独立于视频互转的编码管线:
- 补帧 + 压缩预设:先把视频补帧到 60fps,然后按压缩预设编码输出;
- 补帧 + 高级滤镜:补帧后的视频可以叠加倒放、降噪、镜像等高级滤镜;
- 补帧 + 裁剪:裁剪范围先生效,裁剪后的片段补帧,再编码输出。
已知边界
- 只支持 2× 翻倍:不支持 3× 或其他倍数;
- 大视频耗内存:RIFE 在 4K 视频上可能触发显存压力,应用会自动 downscale 推理;
- minterpolate 有伪影:快速运动场景、物体遮挡、黑白边界锐利处可能出现残影——这是传统光流算法的固有局限,不是 bug;
- 源视频帧率越高效果越差:如果源视频已经是 60fps,补到 120fps 没有实际价值(中间帧都是合成的,不会增加真实细节)。
使用场景
- 电影慢放更顺滑:24fps 电影补到 48fps,慢放时更自然(很多电影机就是拍 48fps 做慢动作);
- 游戏录制变流畅:手机录制的 30fps 游戏画面补到 60fps,剪辑时观感提升明显;
- timelapse 平滑:间隔拍的照片合成 timelapse 后帧率偏低,补帧让过渡更顺滑。
相关页面
- tmix 时间运动模糊 —— 补帧的伴侣功能
- 手动编码与高级滤镜 —— 补帧后的视频可以叠加其他滤镜