You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg能否直接为.ts文件添加.srt字幕文件?直接添加失败原因咨询

FFmpeg能否直接为.ts文件添加.srt字幕文件?直接添加失败原因咨询

你好呀!我来帮你拆解下为什么直接用FFmpeg给.ts文件加.srt字幕会失败,以及对应的解决办法~

首先得明确一个关键点:MPEG-TS(也就是你说的.ts容器)并不原生支持SRT这种纯文本字幕格式。你之前用VobSub(.idx+.sub)能成功,是因为VobSub对应的编码格式dvbsub是TS容器原生支持的,而且你在命令里也明确指定了-c:s:1 dvbsub,FFmpeg能正确识别并完成封装。

再看你尝试的直接加SRT的命令,这里有两个核心问题:

  • 你用了-c:s:2 mov_text,但mov_text是MP4容器专属的字幕编码格式,TS容器根本不识别它,自然会出错;
  • 你想直接-c:s:1 copy复制SRT流,但TS容器无法解析纯文本的SRT格式,复制操作根本没法完成。

那正确的做法应该是把SRT字幕先转换成TS容器支持的编码格式,比如dvbsub(和你之前用的VobSub同类型),调整后的命令大概是这样:

ffmpeg -probesize 60M -analyzeduration 60M ^
-i "input.ts" ^
-i "subtitles.srt" ^
-map 0 -map 1 ^
-vcodec copy -acodec copy ^
-c:s:0 copy ^
-c:s:1 dvbsub ^
-metadata:s:s:0 language=eng -metadata:s:s:0 handler_name=Name1 -metadata:s:s:0 title=Name1 ^
-metadata:s:s:1 language=eng -metadata:s:s:1 handler_name=Good -metadata:s:s:1 title=Good ^
OUTPUT.ts

如果你的原.ts文件本身没有自带字幕流,那可以去掉-c:s:0 copy这一行,直接处理SRT对应的字幕流就行。

另外补充一点:也可以考虑把SRT转换成ASS格式后再封装,但TS容器对ASS的兼容性不如dvbsub好,所以优先推荐转成dvbsub,这样能保证在大多数支持TS的播放设备上都能正常识别字幕。

备注:内容来源于stack exchange,提问作者FlexMcMurphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:47:58