FFMPEG软嵌入WebVTT字幕时定位参数失效问题咨询
问题分析与解决
你的问题核心在于使用了mov_text编码字幕,而mov_text(MP4容器中的传统文本字幕格式)并不支持WebVTT的定位属性(如line、align),导致转码时这些样式信息被丢弃。
原因说明
当你手动加载WebVTT文件时,VLC直接解析WebVTT格式的原生属性,所以定位正常;但用-c:s mov_text将WebVTT转成mov_text轨道时,FFmpeg会丢弃mov_text不支持的样式参数,最终嵌入的字幕仅保留时间码和文本内容。
解决方案
MP4容器本身支持直接封装WebVTT字幕轨道,不需要转成mov_text。使用以下命令即可保留字幕的定位属性:
ffmpeg -y -i video.mp4 -i subtitle.vtt -c copy -c:s webvtt vttout.mp4
-c copy:直接复制视频、音频流(如果原视频/音频编码兼容目标容器的话)-c:s webvtt:指定字幕编码为WebVTT,保留原字幕的所有样式属性
如果原视频/音频编码无法直接复制(比如目标容器不兼容),则需要重新编码视频/音频,同时保留字幕为WebVTT格式,例如:
ffmpeg -y -i video.mp4 -i subtitle.vtt -c:v libx264 -c:a aac -c:s webvtt vttout.mp4
验证
用上述命令生成的视频,在VLC中播放时,字幕会按照WebVTT文件中指定的line:-1 align:right定位显示。
内容的提问来源于stack exchange,提问作者Cole
相关产品推荐
相关产品推荐

