用 FFmpeg 把字幕烧录进视频(硬字幕)

将 .srt 字幕直接渲染到画面上,变成视频的一部分,任何播放器和设备都能显示,并可通过 force_style 自定义字体样式。

Linux视频字幕命令行FFmpeg中风险
执行 ffmpeg -i movie.mp4 -vf "subtitles=movie.srt:force_style='FontSize=24'" -c:a copy output.mp4 即可把字幕永久烧进画面。

01命令

命令
$ ffmpeg -i movie.mp4 -vf "subtitles=movie.srt:force_style='FontName=Noto Sans CJK SC,FontSize=24'" -c:a copy output.mp4

02作用说明

subtitles 滤镜借助 libass 在重新编码时把每句字幕直接画到视频帧上,文字无法关闭——这正是追求兼容性时想要的效果。force_style 可以直接指定字体、字号和颜色,无需修改 .srt 文件;中文字幕请使用 Noto Sans CJK SC 等支持中文的字体。音频采用流复制,只有视频轨会被重新编码。

03风险

风险中风险
使用条件ffmpeg built with libass (sudo apt install ffmpeg / sudo dnf install ffmpeg)
!注意: 烧录字幕必须重新编码整个视频,耗时较长且画质略有下降;烧进去的字幕无法再移除,请务必保留原始文件。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • FFmpeg Filters Documentation (subtitles filter)
    FFmpeg · vendor-doc · 2026-09-17
    依据: The subtitles filter renders text subtitles onto frames via libass and accepts a force_style option to override font, size and colors.
  • ffmpeg(1) — Linux manual page
    Arch Linux · community · 2026-09-17
    依据: Documents -vf video filtering and audio stream copying with -c:a copy during re-encode operations.

最后验证: 2026-09-18 · 分类: 媒体