跳到主要内容

导出与字幕文件

怎样用 FFmpeg 把带样式的 ASS 字幕烧录进视频?

简短回答

使用 FFmpeg 的 ass 或 subtitles 视频滤镜,它们用 libass 把字幕画到每一帧上:ffmpeg -i input.mp4 -vf ass=captions.ass -c:a copy output.mp4。ASS 文件会保留字体、颜色、位置和动画,但这些字体必须已经安装,或者通过 fontsdir 选项指定。烧录会重新编码视频,请保留原文件。

1 分钟阅读

用什么命令把 ASS 文件烧录进视频?

ffmpeg -i input.mp4 -vf "ass=captions.ass" -c:a copy output.mp4
  • -vf "ass=captions.ass" 用 libass 把字幕画到视频上。
  • -c:a copy 保持音频不变。视频一定会被重新编码,因为字幕成了画面的一部分。

如果 ASS 文件用到的字体放在某个文件夹里,就告诉 FFmpeg:

ffmpeg -i input.mp4 -vf "ass=captions.ass:fontsdir=./fonts" -c:a copy output.mp4

这两个滤镜都需要带 libass 的 FFmpeg 版本,即编译时加了 --enable-libass;大多数打包好的版本都已包含(FFmpeg 滤镜文档)。

ass 滤镜和 subtitles 滤镜有什么区别?

  • ass 按 ASS 文件里的样式原样渲染。
  • subtitles 也接受 SRT 等其他格式,会先把它们转换成 ASS。对 SRT 可以用 force_style 设置样式,例如 subtitles=captions.srt:force_style='FontName=Montserrat,FontSize=24'(FFmpeg 滤镜文档)。

带样式的 ASS 文件用 ass;只有 SRT 时,用 subtitles 加 force_style。

为什么字体或样式看起来不对?

  • 缺少字体。 ASS 文件只写了字体名称,不包含字体本身。如果字体没有安装,也不在 fontsdir 里,libass 会换成别的字体。请安装字体或指定字体文件夹。
  • 视频尺寸不同。 ASS 的位置和大小是按特定画布设置的。请把它烧录到制作时对应的那个视频上。
  • 效果不受支持。 有些播放器只支持 ASS 格式的一部分;FFmpeg 使用的 libass 支持其中的大部分。
  • 时间不对。 如果做完 ASS 文件后又修剪了视频,字幕会错位;请用最终剪辑重新生成文件。

用 CaptionBolt 怎么做

CaptionBolt 能为 FFmpeg 工作流导出带样式的 ASS 文件,它和 CaptionBolt 自己烧录字幕时用的是同一个编译器;如果根本不需要 FFmpeg,也可以直接导出成品 MP4。

  1. 上传视频,选择样式,并在"文本编辑"里检查文字。
  2. 下载 ASS 文件。 Pro 和 Max 包含 ASS。
  3. 安装样式用到的字体。 内置样式使用 Montserrat、Anton、Poppins 等字体,可以在 Google Fonts 免费获取。如果你用了自己上传的字体,也要安装那个字体文件。
  4. 对你上传的同一个视频运行上面的 FFmpeg 命令。

如果你只需要带字幕的视频,直接从 CaptionBolt 导出 MP4 即可,字幕已经烧录好了。见 CaptionBolt 能导出哪些字幕文件。

什么情况下其他做法更好?

  • 你在 Premiere Pro、DaVinci Resolve 或 Final Cut Pro 里剪辑。 它们不能导入 ASS;请使用 SRT 或带字幕的 MP4。见怎样把字幕导入剪辑软件。
  • 你希望观众能关掉字幕。 把字幕保留为单独的字幕轨,不要烧录。
  • 怎么把 SRT 文件转成 VTT,或者把 VTT 转成 SRT?

    改三处就行:VTT 文件以 WEBVTT 一行开头,毫秒前用点而不是逗号,还可以带 SRT 不支持的 cue 设置和注释。转换工具几秒钟就能完成,而且不改动文字和时间轴。只改文件后缀是不够的。网页播放器和 HTML5 视频用 VTT;LinkedIn、Facebook 和大多数剪辑软件用 SRT。

  • 怎么把 SRT 字幕文件加到视频里?

    先决定观众能不能关掉字幕。想让字幕可开关,就在 YouTube、LinkedIn 或 Facebook 上把 SRT 和视频一起上传,或者在播放器、视频文件里把它加成字幕轨。想让字幕永久显示,就用 HandBrake、FFmpeg 或剪辑软件把 SRT 烧录进画面。TikTok 和 Instagram 不接受字幕文件,发这两个平台就要把字幕烧录进去。

  • 怎么编辑 SRT 文件又不把它弄坏?

    只改文字,保留结构:每条字幕由一个编号、一行形如 00:00:01,000 --> 00:00:03,500 的时间和一到两行文字组成,字幕之间空一行。不要改箭头和逗号,每条的开始时间要早于结束时间,并以纯 UTF-8 保存。字幕编辑器会帮你检查这些,这样文件依然能导入 YouTube、LinkedIn 或剪辑软件。

  • 怎么从视频生成 SRT 字幕文件?

    先让语音识别生成初稿,再校对并导出 SRT。如果视频在你自己的 YouTube 频道上,可以在 YouTube 工作室免费下载字幕文件。否则就用能导出 SRT 的字幕或转写工具,比如 CaptionBolt 的 Pro 套餐,或者在字幕编辑器里自己打字幕。使用前一定要检查人名、数字和时间轴。

你的第一个带字幕短视频,从一次上传开始。

免费开始,无需绑卡。

我们使用 Cookie 记住你的偏好、衡量网站表现,并持续改进 CaptionBolt。