将 HLS m3u8 转码为 MP4 并包含文本轨道

Jus*_*tin 4 video ffmpeg

FFMPEG 是否可以将 m3u8 转换为 MP4 并保留字幕(文本)轨道?

查看Apple流时,https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8 我看到视频流提到了隐藏式字幕,但我似乎找不到一种提取它们的方法。

流 #0:0: 视频: h264 (主) ([27][0][0][0] / 0x001B), yuv420p(tv, smpte1
70m/smpte170m/bt709)、400x300、隐藏式字幕、29.92 fps、29.92 tbr、90k tbn、1
80k 待定

我多次尝试转码为 mp4,但它会丢失字幕。

我在清单上使用了 VLC,它有“字幕”,但转码后 mp4 没有。

使用命令: ffmpeg -i https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8 -c copy -bsf:a aac_adtstoasc out.mp4

Jus*_*tin 5

我确实设法收集了足够多的信息来完成这项工作。它是 3 个命令的组合。

使用 ffmpeg 版本 2.8.4

首先,播放列表片段需要合并到单个 MPEG-TS 文件中:

ffmpeg -i [playlist_url].m3u8 -c copy [filename].ts

接下来,我们需要从文件中提取隐藏式字幕:

ffmpeg -f lavfi -i "movie=[filename_from_last_step].ts[out0+subcc]" [filename].srt

注意:只有当 ts 文件和 cmd 的当前路径匹配时,我才能让它工作。

最后,合并 ts 和 srt 文件并转码为 MP4:

ffmpeg -i [filename_from_first_step].ts -i [captions].srt -c:v copy -bsf:a aac_adtstoasc -c:s mov_text [out_file_name].mp4

这将为您提供嵌入字幕的 MP4,如果您的播放器不支持嵌入字幕,还会提供独立的 srt 文件。