我有一个视频 (video.mp4
) 和一个字幕文件 (subtitle.srt
)。
我正在尝试使用 FFmpeg 为视频生成具有 3 种不同分辨率的 VoD HLS 播放列表;我还希望字幕文件变成分段的 .vtt
文件。
我试过以下命令,但它不起作用,它给我一个“转换失败!”没有任何进一步信息的消息:
ffmpeg -i video.mp4 -i subtitle.srt \
-preset slow -g 60 -sc_threshold 0 \
-map 0 -map 0 -map 0 -map 1 \
-s:v:0 640x360 -c:v:0 h264 -b:v:0 500k \
-s:v:1 854x480 -c:v:1 h264 -b:v:1 1000k \
-s:v:2 1280x720 -c:v:2 h264 -b:v:2 2000K \
-c:a copy -c:s webvtt \
-f hls -hls_playlist_type vod -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" \
-master_pl_name master.m3u8 -hls_time 6 -hls_list_size 0 -hls_allow_cache 1 -start_number 1 \
-hls_segment_filename "output/hls/%v/seg-%d.ts" output/hls/%v/index.m3u8
我正在努力在 FFmpeg 文档或其他任何地方找到有关如何将字幕添加到 HLS 播放列表的任何有用信息。命令到底应该是什么样的?我缺少什么?
最佳答案
文档不是很好,但请参阅 -var_stream_map
部分的底部附近。您需要为字幕添加到相关变体流组的映射。
所以你上面的例子会变成:
-var_stream_map "v:0,a:0,s:0 v:1,a:1,s:0 v:2,a:2,s:0"
如果您愿意,可以通过附加,sgroup=examplegroupname
来设置字幕组名称。
最后,还有一个非文档选项 hls_subtitle_path
允许您设置字幕 list 名称(默认为主 m3u8 名称加上 _vtt.m3u8
。
关于ffmpeg - 如何使用 FFmpeg 将字幕添加到 HLS 播放列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67663932/