FFmpeg 设置
FFmpeg 设置用于控制视频转码、弹幕压制和切片导出时的编码参数。大多数情况下,先选择与硬件相符的基础预设即可;只有在明确了解参数含义时,再修改单项设置。
WARNING
选择未受硬件或当前 FFmpeg 支持的编码器会导致任务失败。遇到硬件编码报错时,请确认显卡驱动、硬件能力和 FFmpeg 版本;也可以切换至 CPU 编码器。
预设
预设是一组完整的 FFmpeg 参数。界面提供以下基础预设:
| 编码格式 | CPU | Intel | NVIDIA | AMD | Apple |
|---|---|---|---|---|---|
| H.264 | x264 | QSV | NVEnc | AMF | VideoToolbox |
| H.265 | x265 | QSV | NVEnc | AMF | VideoToolbox |
| AV1 | SVT-AV1 | QSV | NVEnc | AMF | VideoToolbox |
另有 copy 预设,它会直接复制原始视频流,不重新编码。
- 优先从预设切换编码器。不同编码器支持的码率控制方式和
preset参数并不相同。 - 选择基础预设后,可用“另存为”创建自己的预设;自定义预设可以重命名、保存和删除。
copy不会重新编码,速度最快且不会产生画质损失;但它不能应用视频滤镜,因此需要压制弹幕、缩放、调整帧率或添加时间戳时不要使用copy。
视频编码
编码器
libx264/libx265:CPU 编码,速度相对较慢,兼容性和压缩效果通常较稳定。libsvtav1:CPU AV1 编码,对硬件资源和处理时间要求较高。*_qsv:Intel 核显硬件编码。*_nvenc:NVIDIA 显卡硬件编码。*_amf:AMD 显卡硬件编码。*_videotoolbox:Apple 平台硬件编码。
H.264 兼容性最好;H.265 一般有更高压缩效率;AV1 通常可进一步提升压缩效率,但硬件编码支持取决于显卡和 FFmpeg 版本。使用 Apple AV1 编码时,FFmpeg 需要 8.0 或更高版本。
码率控制
可选项会随编码器变化:
| 方式 | 适用编码器 | 含义 |
|---|---|---|
| CRF | x264、x265、SVT-AV1 | 固定质量;数值越小,质量越高、文件越大且编码通常越慢。 |
| CQ | NVIDIA NVEnc | 恒定质量;0 为自动,1–51 中数值越小质量越高。 |
| ICQ | Intel QSV | 智能恒定质量;1–51 中数值越小质量越高。 |
| VBR(平均比特率) | 所有可转码编码器 | 以目标码率控制文件体积和画质。 |
使用 x264/x265 时,CRF 18–24 一般适合高质量输出,18 常被视为接近视觉无损;28–51 会进一步缩小文件但降低画质。默认 x264 预设使用 CRF 23,x265 使用 CRF 27。
使用 VBR 时,码率单位为 K(如 5000 表示 5000k)。杂谈类录播通常可从 5000k 开始;游戏或弹幕较多的视频可尝试 10000k 或更高。最终效果会受原始画质、分辨率和平台二次编码影响,建议以短片测试为准。
preset
preset 用于在编码速度和压缩效率之间取舍。CPU 编码通常从 ultrafast 到 placebo,越靠后越慢、压缩效率通常越好;建议优先使用 medium 或更慢的档位,并根据处理时间调整。硬件编码器提供各自的 preset 选项,应保留与所选编码器匹配的值。
帧率、10 bit 与硬件解码
- 帧率:使用 FFmpeg 的
fps滤镜控制输出帧率;留空时不处理。低帧率的电台等视频可适当提高帧率,以改善滚动弹幕的观感。 - 10 bit:仅在使用
libsvtav1时显示。开启后使用 10 bit 像素格式,资源消耗更高;硬件和播放端支持时可考虑开启。 - 硬件解码:仅在 Intel QSV 或 NVIDIA NVEnc 编码器下可用。只有输出链路未使用滤镜时才会启用;一旦压制弹幕、缩放、调帧率或加入其他滤镜,硬件解码不会按此选项生效。
- 编码线程数:默认
-1,交由 FFmpeg 自动决定;填写大于 0 的值才会向 FFmpeg 传递-threads。一般无需修改。
分辨率
开启“分辨率”后可指定输出宽高。缩放本身不会提升源视频画质,但较高分辨率可能获得平台更高的码率档位,从而减少二次编码造成的损失。请尽量使用偶数尺寸。
例如,Bilibili 4K 画质通常要求短边大于 1600;将 1080p 视频设为 2880 × 1620 是一种可尝试的设置。也可以填入 -2 让 FFmpeg 自动计算该边,同时保持比例;宽和高不能同时为负数,也不能有任一边为 0。
缩放设置
- 缩放算法:可选择默认、双线性(
bilinear)、三次插值(bicubic)、Lanczos(lanczos)或最近邻(neighbor)。不同素材适合的算法不同,默认设置通常足够。 - 处理顺序:
- 自动 / 先渲染后缩放:先压制弹幕、字幕等内容,再缩放输出。
- 先缩放后渲染:先调整视频尺寸,再渲染弹幕、字幕等内容。
- 放大分辨率时通常适合先渲染后缩放;缩小分辨率时通常适合先缩放后渲染。
- 强制宽高比:
缩小会在目标尺寸内完整保留画面;放大会填满目标尺寸,可能裁切边缘;自动不额外指定此行为。 - 硬件过滤器:使用 QSV 或 NVEnc 时可见。它可在部分场景加快缩放,但兼容性和实际收益因显卡、驱动与滤镜组合而异;遇到错误或变慢时请关闭。
PK 优化
此选项用于解决上传 Bilibili 后 PK 视频可能被拉伸的问题。开启后会强制“宽高比”为“缩小”,并补边以适配目标分辨率。在 webhook 转码中,它还会先检测视频分辨率;未发现多种分辨率时不会转码。没有 PK 或分辨率变化相关需求时,请保持关闭。
时间戳
开启后,程序会将录制开始时间绘制到视频上。时间来源按以下顺序尝试:
- webhook 传入的开始时间;
- 弹幕元数据(支持录播姬、blrec 和本软件下载的录播);
- 视频元数据中的录制时间信息(例如录播姬注释)。
未读取到有效时间时,即使已开启该选项也不会绘制时间戳。
- x 轴 / y 轴:时间戳左上角的位置,默认均为 10。
- 字体大小 / 颜色:绘制文本的外观,默认 24px、白色。
- 跟随弹幕字体:压制 XML 弹幕时,时间戳使用弹幕配置中的字体。
- 内容格式:使用 strftime 格式;默认
%Y-%m-%d %T。格式中的:需要额外转义。 - 额外参数:传递给 FFmpeg
drawtext滤镜的自定义参数,例如box=1:boxcolor=#ff0000。可参考 FFmpeg drawtext 文档。
高级参数
视频滤镜
填写自定义滤镜链时,使用分号 ; 分隔多个滤镜。$origin 是程序根据分辨率、帧率、弹幕、字幕和时间戳等设置生成的默认滤镜占位符,通常必须保留。
例如:
hflip;$origin;transpose=1该示例会先水平翻转,再应用程序默认滤镜,最后旋转 90 度。自定义滤镜可能改变分辨率设置的结果,请自行确认完整滤镜链。
额外输出参数
此处的内容会直接追加到 FFmpeg 输出参数中,可用于尚未在界面提供的高级选项。参数会按空格拆分,因此包含空格、引号或复杂转义的参数尤其需要谨慎测试。错误参数可能导致任务无法运行。
常见建议
- 只需快速转封装且不需要任何画面处理时,选择
copy。 - 需要兼容多数播放设备和平台时,优先选择 H.264。
- 有对应硬件且希望提高速度时,选择与设备匹配的 QSV、NVEnc、AMF 或 VideoToolbox 预设。
- 修改编码器后先重新选择对应基础预设,避免遗留不兼容的码率控制或
preset参数。 - 第一次使用新参数时,先截取短片测试输出画质、速度和兼容性。
