我正在尝试下载此流的字幕(https://live.performa.intio.tv/media/30e671d3-0bd2-46db-b70d-6fb4cb6be350/master-allsubs.m3u8),使用 youtube-dl。
在 m3u8 文件中,字幕被列为媒体资源
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="German",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="deu",URI="subs-deu.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng",URI="subs-eng.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Italian",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="ita",URI="subs-ita.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="fra",URI="subs-fra.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Japanese",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="jpn",URI="subs-jpn.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Russian",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="rus",URI="subs-rus.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Spanish",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="spa",URI="subs-spa.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Chinese",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="zho",URI="subs-zho.m3u8"
但是任何下载尝试都会失败,例如
youtube-dl --write-sub --skip-download "https://live.performa.intio.tv/media/30e671d3-0bd2-46db-b70d-6fb4cb6be350/master-allsubs.m3u8"
没有返回任何错误,但也没有创建字幕文件。有什么想法吗?
答案1
使用ffmpeg对于每个字幕播放列表(subs-XXX.m3u8 链接),然后将它们添加到您下载的视频中。
例如英文字幕:
下载:
ffmpeg -i "https://live.performa.intio.tv/media/30e671d3-0bd2-46db-b70d-6fb4cb6be350/subs-eng.m3u8" subs-eng.srt
将它们添加到您的视频中:
ffmpeg -i downloaded.mp4 -i subs-eng.srt -c copy -c:s mov_text outfile.mp4
不幸的是,使用这种方法您必须对链接到的 8 种语言中的每一种重复此操作;带有 for 循环的 bash 脚本可能是执行此操作的方法。