FFmpeg 如何合并字幕

FFmpeg 合并字幕主要分为"硬字幕"(烧录进画面,不可关闭)和"软字幕"(封装进容器,可关闭/切换)两种方式。硬字幕 使用 -vf subtitles=subtitle.srt 滤镜将字幕渲染进视频;软字幕 使用 -i 输入字幕文件并用 -c:s 将其流式封装。

  1. 硬字幕(烧录,永久显示)

使用 subtitles 视频滤镜,适用于所有播放器。

bash

复制代码
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4
  • 特性:将字幕永久像素化到视频中。
  • 适用:ASS 或 SRT 格式。如果文件名包含特殊字符,建议使用 ASS格式并做好转义。
  1. 软字幕(封装,可关闭)

将字幕文件与视频流封装成一个容器(如 MKV、MP4)。

bash

复制代码
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4
  • 特性:视频和字幕文件分开存储在同一文件中。
  • 适用 :MOV/MP4 格式建议使用 mov_text,MKV 格式建议使用 srtass
  1. 多条字幕与默认字幕

封装多个字幕文件并指定默认字幕:

bash

复制代码
ffmpeg -i input.mp4 -i sub1.srt -i sub2.ass -map 0:v -map 0:a -map 1 -map 2 \
-c copy -c:s:0 srt -c:s:1 ass \
-disposition:s:0 default output.mkv
  • -map:映射输入文件。
  • -disposition:s:0 default:将第一条字幕设为默认。
  1. 常见问题:ASS 格式位置

如果 ASS 字幕位置偏高,可以使用滤镜参数进行调整:

bash

复制代码
ffmpeg -i input.mp4 -vf "subtitles=sub.ass:force_style='MarginV=20'" output.mp4

提示:以上指令中 copy 模式速度最快且无损,仅支持软字幕封装;滤镜模式 (-vf) 会重新编码视频,速度较慢。

相关推荐
IvanCodes16 小时前
FFmpeg安装与使用教程
ffmpeg
betazhou4 天前
mysql shell8.4.10+mysql 8.4.10搭建MySQL replicaset主从
数据库·mysql·ffmpeg·replicaset·mysql shell
VidDown4 天前
# VP9 还是 H.265?一次压缩选型翻车后的复盘
ffmpeg·音视频·h.265·视频编解码·视频·vp9
heqingchun165 天前
RK3568 交叉编译与部署:MPP + FFmpeg 硬解全流程
ffmpeg·视频编解码
云贝贝贝6 天前
OceanBase 生产运维 7 个高频现场:从连不上到误删兜底
运维·ffmpeg·oceanbase
≮傷£≯√6 天前
ffmpeg 2个图片合并为视频
ffmpeg·音视频
zone_z9 天前
07 · 等待事件与 OWI 方法:从 OSW 到 BUG 的完整破案实录
linux·数据库·oracle·ffmpeg·bug·troubleshooting
'20610 天前
**写了个自动整理下载视频的脚本:按片名归档、自动重命名、生成目录索引
开发语言·python·ffmpeg·音视频·cctv
殷忆枫10 天前
嵌入式Linux下基于FFmpeg实现MP4解码为JPG图片(SSD202D交叉编译实战)
linux·运维·ffmpeg
≮傷£≯√11 天前
图片合并成视频 img2video ffmpeg
ffmpeg·音视频