FFMPEG:MP4封装格式中外挂字幕的提取

时间:2024-04-11 10:47:10


起因

一直以为MP4无法封装外挂字幕,直到今天看到MEGUI混流器中输出MP4时也可添加外挂字幕

FFMPEG:MP4封装格式中外挂字幕的提取
于是试着封装了一个MP4,效果和MKV相同。


字幕编码

MKV中.SRT字幕的编码格式FFMPEG:MP4封装格式中外挂字幕的提取
那么,.SRT封装入MP4后是什么编码呢?
FFMPEG:MP4封装格式中外挂字幕的提取

显然,用MP4封装外挂字幕的过程中,UTF-8编码的.SRT文件被重新编码成TIMED_TEXT编码的文件了。


探索

笔者将装有TIMED_TEXT字幕的MP4拖入MKVTOOLNIX,发现其字幕流并未被识别。猜测可能原因:1:MKVTOOLNIX对MP4文件只侦测其音频流和视频流;2:笔者使用的MKVTOOLNIX版本过于老旧。
FFMPEG:MP4封装格式中外挂字幕的提取
笔者又使用MEGUI自带的流提取器进行试验,发现其不支持对MP4文件的流提取
FFMPEG:MP4封装格式中外挂字幕的提取
笔者未实验小丸工具箱等其他软件。


TIMED_TXT字幕的提取

ffmpeg -i input.mp4 -map 0:s sub.ass


结论

1、MP4中外挂字幕的编码:TIMED_TEXT(又称:.TTXT,MOV_TEXT)

2、用以上命令导出的字幕文件为SSA编码


后话

FFMPEG:MP4封装格式中外挂字幕的提取