用 ffmpeg 批量压缩并处理视频(保留字幕、加水印),适合短视频

阿里云教程1个月前发布
10 0 0

你是不是常常为导出视频体积太大、平台上传慢、字幕丢失或画质下降而头疼?

本文用最实用的 ffmpeg 命令教你如何:批量压缩视频、保留或烫印字幕、加入水印、生成缩略图与元数据,并提供 Windows / macOS / Linux 的一键脚本。步骤清晰、可复制,适合短视频创作者、内容产出者和小团队。

用 ffmpeg 批量压缩并处理视频(保留字幕、加水印),适合短视频

为什么用 ffmpeg?

  • 免费开源、跨平台、支持硬件加速
  • 命令可自动化、适合批量处理
  • 可以完全控制编码参数(质量 vs 体积)与字幕处理方式

适用场景

  • 把高清影片压成适合抖音 / 快手 / B站上传的小尺寸文件
  • 批量把字幕(.srt)嵌入或保留为软字幕
  • 给视频统一加水印、生成缩略图、提取音频用于播客

一:准备工作(安装 ffmpeg)

macOS(Homebrew)

brew install ffmpeg

Ubuntu / Debian

sudo apt update

sudo apt install ffmpeg -y

Windows

  • 推荐使用 [ffmpeg 的静态包](解压到某文件夹并把 bin 路径加入 PATH),或使用 choco install ffmpeg(若安装了 Chocolatey)。
  • (说明里不写外链;如需链接我可以给你)

用 ffmpeg 批量压缩并处理视频(保留字幕、加水印),适合短视频

二:常用参数速览(先记住这几项)

  • -c:v libx264:CPU x264 编码(兼容性强)
  • -preset slow|medium|fast:编码速度/压缩效率权衡(slow 质量更优但慢)
  • -crf 18–28:质量控制(数值越小画质越好/体积越大)。常用:YouTube 1822,短视频 2024。
  • -c:a aac -b:a 128k:音频编码与比特率
  • 硬件编码示例:-c:v h264_nvenc(NVIDIA),-c:v h264_qsv(Intel QSV),-vaapi(Linux VAAPI)
  • -c:s mov_text:把字幕嵌为 MP4 的软字幕(保留,可开关)
  • 烫印字幕(burn-in):-vf subtitles=subtitle.srt(需要 ffmpeg 编译时支持)

三:单文件压缩(保留软字幕,不烫印)

假设原视频 in.mp4,字幕 in.srt(同名),输出 out.mp4:

ffmpeg -i in.mp4 -i in.srt -map 0 -map 1 -c:v libx264 -preset medium -crf 22 -c:a aac -b:a 128k -c:s mov_text out.mp4

说明:

  • -map 0 把原视频流/音频流映射进去,-map 1 把 srt 映射为字幕流(软字幕)。
  • 输出文件为 MP4,播放器/平台若支持会显示可切换字幕。

四:单文件压缩(把字幕烫入画面 — 所有设备都能看到)

适合短视频平台或不支持软字幕的平台:

ffmpeg -i in.mp4 -vf “subtitles=in.srt:force_style='FontName=Arial,FontSize=24'” -c:v libx264 -preset medium -crf 22 -c:a aac -b:a 128k out_burnin.mp4

说明:

  • subtitles 需要 ffmpeg 支持 libass(多数预编译版支持)。
  • 可用 force_style 调整字体/大小/颜色。

五:加入透明水印(右下角,保持 10% 边距)

水印图片 logo.png(含透明通道):

ffmpeg -i in.mp4 -i logo.png -filter_complex “overlay=W-w-10:H-h-10” -c:v libx264 -preset medium -crf 22 -c:a copy out_watermark.mp4

说明:

  • overlay=W-w-10:H-h-10 表明右下角偏移 10px。

六:硬件加速压缩示例(NVIDIA NVENC)

如果你有 NVIDIA GPU,速度会快许多(但 CRF 表明略有不同):

ffmpeg -hwaccel nvdec -i in.mp4 -c:v h264_nvenc -preset slow -rc vbr_hq -cq 19 -b:v 0 -c:a aac -b:a 128k out_nvenc.mp4

说明:

  • -cq 类似于质量目标,数值越小画质越好(参考厂商文档微调)。

七:一键批量处理(Linux / macOS Bash 脚本)

把本目录下所有 .mp4 压缩并保留同名 .srt(软字幕),输出到 ./out:

mkdir -p out

for f in *.mp4; do

if [ -f “${name}.srt” ]; then

ffmpeg -i “$f” -i “${name}.srt” -map 0 -map 1 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k -c:s mov_text “out/${name}_small.mp4”

else

ffmpeg -i “$f” -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k “out/${name}_small.mp4”

fi

done

说明:

  • crf=23 为通用短视频压缩值,若追求更高质量可设 20。

八:Windows PowerShell 批量脚本

在文件夹中运行,输出到 out:

New-Item -ItemType Directory -Path .out -Force

Get-ChildItem -Filter *.mp4 | ForEach-Object {

$name = $_.BaseName

if (Test-Path “$name.srt”) {

ffmpeg -i “$($_.FullName)” -i “$name.srt” -map 0 -map 1 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k -c:s mov_text “.out$name_small.mp4”

} else {

ffmpeg -i “$($_.FullName)” -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k “.out$name_small.mp4”

}

}

九:生成缩略图(中间帧 + 多分辨率)

单张缩略图(取视频第 10 秒):

ffmpeg -ss 00:00:10 -i in.mp4 -frames:v 1 -q:v 2 thumb.jpg

多张缩略图(每 30 秒一张):

ffmpeg -i in.mp4 -vf “fps=1/30,scale=1280:-1” -qscale:v 2 thumbs_%03d.jpg

十:提取音频(mp3 或 aac)

# MP3(用于播客)

ffmpeg -i in.mp4 -vn -c:a libmp3lame -b:a 192k out.mp3

# AAC(更小更现代)

ffmpeg -i in.mp4 -vn -c:a aac -b:a 128k out.m4a

十一:进阶技巧与提议(提高上传成功率与画质)

  1. 目标平台参数
  2. 抖音/快手:竖屏优先 1080×1920(或 720×1280);帧率保持 25/30fps;crf 20~24。
  3. B站/YouTube:横屏 1920×1080;crf 18~22。
  4. 两遍编码(需要极致压缩与质量)
  5. 对于 x264,两遍可以更准确控制平均码率:

ffmpeg -y -i in.mp4 -c:v libx264 -b:v 2500k -pass 1 -an -f mp4 /dev/null &&

ffmpeg -i in.mp4 -c:v libx264 -b:v 2500k -pass 2 -c:a aac -b:a 128k out.mp4

  1. 一般短视频用 CRF 即可,速度更快。
  2. 保留字幕 vs 烫入字幕
  3. 保留软字幕(mov_text)体积小且可切换,但部分手机/平台不支持。
  4. 烫入字幕可保证任何平台都能看到,但无法关闭且对画质有轻微影响。
  5. 文件名与元数据
  6. 使用 -metadata title=”标题” 添加元数据,便于管理与上传后平台识别。
  7. 硬件加速注意事项
  8. NVENC / QSV 等速度快,但在低比特率下可能产生宏块或画质瑕疵,需多做对比。
  9. 测试不同 -preset / -cq 或 -rc 设置找到最佳平衡。
  10. 水印与位置
  11. 对移动端视频提议放在保守区域(避免被平台 UI 遮盖),常用右下或左上留白 10% 区域。

十二:常见问题(FAQ)

  • ffmpeg 报错找不到字幕滤镜:说明你的 ffmpeg 没启用 libass,换用预编译较全的版本或用系统包管理器安装完整版。
  • 上传后平台自动转码导致花屏:尝试提高目标文件比特率或使用平台推荐的参数。
  • 批处理速度慢:启用硬件编码或并行处理多线程(注意不要超载磁盘/CPU)。

结语(呼吁行动)

用好 ffmpeg,你能把制作时间变成自动化流程:批量压缩、统一字幕处理、自动生成缩略图与水印,一键输出适合各平台的最终文件。

如果你愿意,我可以:

  • 把上面的脚本按你的平台(Windows / macOS / Linux)改写成一键执行的工具;
  • 或者为你生成适配抖音/YouTube/微信视频的具体参数表与封面模板。
© 版权声明

相关文章

暂无评论

none
暂无评论...