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
相关产品推荐
相关产品推荐

