如何在Google Transcoder的DASH manifest中使用多字幕
DASH多字幕配置报错解决:容器格式不支持
这个错误的核心原因很明确:DASH对字幕的容器格式要求比HLS严格——HLS可以直接引用.vtt、.srt这类纯文本字幕,但DASH要求字幕必须封装进MP4或者fMP4(碎片化MP4)容器里,你直接照搬HLS的字幕引用方式自然会触发报错。
下面是具体的解决步骤:
把字幕转成fMP4封装格式
用FFmpeg就能搞定,以WebVTT字幕为例:ffmpeg -i subtitles.vtt -c:s mp4s -f mp4 subtitles_fmp4.mp4如果是SRT格式的字幕,得先转成WebVTT再封装:
ffmpeg -i subtitles.srt -c:s webvtt -f webvtt subtitles.vtt && ffmpeg -i subtitles.vtt -c:s mp4s -f mp4 subtitles_fmp4.mp4修改DASH的MPD配置文件
在MPD里添加字幕对应的AdaptationSet,要指定正确的mimeType和编码,多字幕就加多个Representation:<AdaptationSet mimeType="application/mp4" codecs="wvtt"> <Representation id="subtitle-en" bandwidth="1000"> <BaseURL>subtitles_fmp4.mp4</BaseURL> </Representation> <Representation id="subtitle-zh" bandwidth="1000"> <BaseURL>subtitles_zh_fmp4.mp4</BaseURL> </Representation> </AdaptationSet>要是用的是TTML字幕,把
codecs改成ttml就行。验证配置
用dash.js的测试播放器加载你的MPD文件,确认字幕能正常切换且没有报错。
额外提醒:别再直接引用纯文本字幕文件了,必须走MP4/fMP4封装这条路,带宽值不用设太高,1000左右完全够。
内容的提问来源于stack exchange,提问作者billacode
相关产品推荐
相关产品推荐

