如何使用FFmpeg向HLS播放列表添加字幕?

如何使用FFmpeg向HLS播放列表添加字幕?,ffmpeg,http-live-streaming,hls.js,Ffmpeg,Http Live Streaming,Hls.js,我有一个视频(video.mp4)和一个字幕文件(subtitle.srt) 我正在尝试使用FFmpeg为视频生成具有3种不同分辨率的VoD HLS播放列表;我还希望字幕文件变成分段的.vtt文件 我尝试了以下命令,但它不起作用,它给我一条“转换失败!”消息,没有任何进一步的信息: ffmpeg-i video.mp4-i subtitle.srt\ -预设慢速-g 60-sc_阈值0\ -地图0-地图0-地图0-地图1\ -s:v:0 640x360-c:v:0 h264-b:v:0 500k

我有一个视频(
video.mp4
)和一个字幕文件(
subtitle.srt

我正在尝试使用FFmpeg为视频生成具有3种不同分辨率的VoD HLS播放列表;我还希望字幕文件变成分段的
.vtt
文件

我尝试了以下命令,但它不起作用,它给我一条“转换失败!”消息,没有任何进一步的信息:

ffmpeg-i video.mp4-i subtitle.srt\
-预设慢速-g 60-sc_阈值0\
-地图0-地图0-地图0-地图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:21280X720-c:v:2H264-b:v:2000K\
-c:a副本-c:s webvtt\
-f hls-hls_播放列表_类型vod-var_流_映射“v:0,a:0 v:1,a:1 v:2,a:2”\
-master\u pl\u name master.m3u8-hls\u时间6-hls\u列表大小0-hls\u允许\u缓存1-开始\u编号1\
-hls_段_文件名“输出/hls/%v/seg-%d.ts”输出/hls/%v/index.m3u8

我很难在FFmpeg文档或其他任何地方找到关于如何将字幕添加到HLS播放列表的有用信息。命令应该是什么样的?我的文档中缺少了什么?

文档不是很好,但是请参见本节底部附近的
-var\u stream\u 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\u subtitle\u path
,可用于设置字幕清单名称(默认为主m3u8名称加上
\u vtt.m3u8

谢谢。我不知道是谁否决了你的答案。奇怪。他们也否决了我的问题。我不知道为什么。不管怎样,自从我发布这个问题以来,我一直在尝试使用
-var\u stream\u map
,但不仅文档很糟糕,错误消息都是错误的。)tic也是。您提到了
hls\u subtitle\u路径
选项。谢谢。还有设置字幕段名称的选项吗?默认为主m3u8文件名+段号(例如
playli2.vtt
)这不太好。另外,我可以在任何地方找到未记录选项的列表吗?不幸的是,对于字幕段名称,它似乎没有应用
hls\u segment\u filename
,并且似乎没有类似的选项,看起来像是疏忽:-(所有可用的选项都可以使用
ffmpeg-h muxer=hls
显示,尽管文档对某些选项来说不是很好。如果你能理解C,源代码在是很有帮助的。@AnonymousCoward哦,真是个笨蛋!但是非常感谢你的帮助。非常感谢。