如何用 FFmpeg 创建剪辑代理
可复制的 FFmpeg 命令,生成 H.264、ProRes 和 DNxHR 代理,真正改变输出的少数参数,以及如何批量处理一个素材文件夹。
FFmpeg 是手动制作剪辑代理最快的免费方式。本指南给出适用于所有剪辑软件三大编解码家族的可用命令,说明真正改变输出的少数参数,并演示如何一次转换整个文件夹。
什么是代理,为什么用 FFmpeg
代理是源片段的一个轻量低分辨率副本。剪辑软件在剪辑时播放代理,并保留指向原始文件的链接用于导出,因此时间线在笔记本上依然流畅,而成片仍以完整画质渲染。FFmpeg 是一个免费开源的命令行工具,几乎能读取任何摄影机格式,并按你软件偏好的编解码器写出代理。
Premiere Pro 的 H.264 代理(文件最小)
H.264 生成的代理文件最小,在任何现代 GPU 上都能即时解码,因此是 Adobe Premiere Pro 的稳妥默认选择。下面的命令把片段缩放到 720p 并保留音频。
ffmpeg -i input.mov -vf scale=-2:720 -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k proxy.mp4scale=-2:720 把高度设为 720 像素,并自动计算宽度以保持画面比例,且始终为偶数。crf 越低画质越高、文件越大,越高则相反。23 是代理的一个不错的平衡点。
Final Cut Pro 与 DaVinci Resolve 的 ProRes Proxy
当你在 Final Cut Pro 或 DaVinci Resolve 中剪辑时,ProRes Proxy 是正确选择,因为该编解码器是这些软件的原生格式。Profile 0 是最轻的 ProRes 档位。
ffmpeg -i input.mov -vf scale=-2:720 -c:v prores_ks -profile:v 0 -c:a pcm_s16le proxy.movprofile:v 0 选择 ProRes Proxy。若想离线画质略高,可用 1 表示 ProRes LT。音频写为未压缩的 PCM,这是 Resolve 和 Final Cut 偏好的格式。
Avid Media Composer 的 DNxHR LB 代理
Avid Media Composer 能顺畅读取 DNxHR。LB(Low Bandwidth,低带宽)是代理档位。为 Avid 把它封装为 MXF 文件。
ffmpeg -i input.mov -vf scale=-2:720 -c:v dnxhd -profile:v dnxhr_lb -pix_fmt yuv422p -c:a pcm_s16le proxy.mxfdnxhd 编码器通过 profile 参数处理 DNxHR。yuv422p 是 Avid 期望的像素格式。保持与源相同的帧率,见下方参数。
真正改变结果的参数
| 参数 | 控制什么 |
|---|---|
| -vf scale=-2:720 | 输出分辨率。-2 在保持比例的同时给出偶数宽度。 |
| -c:v | 视频编解码器:libx264、prores_ks 或 dnxhd。 |
| -profile:v | 编解码档位:ProRes Proxy 用 0,DNxHR LB 用 dnxhr_lb。 |
| -crf | H.264 的画质:越低越好但越大,代理取 20 到 25。 |
| -c:a | 音频编解码器:H.264 用 aac,ProRes 和 DNxHR 用 pcm_s16le。 |
| -r | 帧率。仅在源为可变帧率时设置。 |
一次转换整个文件夹
剪一个项目意味着数百个片段,而不是一个。下面的循环把一个文件夹里的每个 .mov 转成 H.264 代理,放进 proxies 子文件夹。在 macOS 或 Linux 上运行。
mkdir -p proxies
for f in *.mov; do
ffmpeg -i "$f" -vf scale=-2:720 -c:v libx264 -crf 23 -preset fast -c:a aac "proxies/${f%.*}.mp4"
done在 Windows 上,同样的思路可用 PowerShell 对 Get-ChildItem 做 foreach 循环实现。把代理放在各自的文件夹里,剪辑软件就能指向它们而不触碰原始文件。
常见错误及修复
- 未知编码器 prores_ks 或 dnxhd:你的 FFmpeg 版本缺少该编解码器。安装完整版本,官方静态版本两者都含。
- 音频不同步:源很可能是可变帧率。加上 -vsync cfr,或把 -r 设为真实帧率。
- 代理文件过大:crf 太低或漏了 scale 参数。确认 -vf scale 且 crf 约为 23。
- 软件无法重新链接到原始文件:让代理主文件名与源保持一致,并把原始文件放在稳定位置。
手动代理在何处不再可行
FFmpeg 处理少量片段非常合适。但在为期五天、数百个文件的 4K 项目上,代价开始显现。编码在你自己的处理器上跑数小时,代理与原始文件并存使磁盘占用翻倍,而且每个片段的命名和重新链接都要手动完成。
用 Sanbila 自动完成同样的代理
Sanbila 是一款桌面软件,替你完成这一代理步骤,且不占用你的机器。代理在 Sanbila 的云端生成,而非你的处理器,提供覆盖同样三大编解码家族的七种预设:H.264 的 540p、720p 和 1080p,ProRes Proxy 的 720p 和 1080p,以及 DNxHR LB 的 720p 和 1080p。Sanbila 的 Premiere Pro 插件会自动把每个代理附加到其 4K 原始文件上,因此无需手动重新链接,而且你可以为每个文件选择流式播放原始文件而非使用代理。
在云端生成 H.264、ProRes 和 DNxHR 代理,让处理器空闲,省去手动重新链接。
免费试用 SanbilaFAQ
FFmpeg 制作代理是免费的吗?
是的。FFmpeg 免费且开源,个人或商业使用都无需授权费。你付出的只是配置时间,以及它在你自己机器上编码所花的处理器时间。
剪辑代理该用哪个 FFmpeg 编解码器?
Premiere Pro 与追求最小文件用 H.264(libx264),Final Cut Pro 与 DaVinci Resolve 用 ProRes Proxy(prores_ks profile 0),链路中有 Avid Media Composer 时用 DNxHR LB(dnxhd profile dnxhr_lb)。
为什么我的 FFmpeg 代理在时间线上不同步?
最常见的原因是源为可变帧率。用 -vsync cfr 强制恒定帧率,或把 -r 设为片段的真实帧率,让代理与原始文件保持相同的时基。
FFmpeg 能把整个文件夹批量转成代理吗?
能。一个针对文件夹内每个文件的简短 shell 循环即可为每个片段写出一个代理。它在你的处理器上运行,因此大型项目可能耗时数小时,这正是云端工具在你机器之外生成同样代理的原因。