因业务需求,需要将多个 m3u8 文件合并成一个。解析 m3u8 文件以后,发现一个文件分为 3 部分,第一部分是 #EXTM3U 这些文件头,第二部分是 ts 后缀的视频分片文件,第三部分就是 #EXT-X-ENDLIST 结尾。所以我的思路就是将多个 m3u8 文件的 ts 都提取出来合并到一起,然后加上头和结尾。
合并出来的文件能正常播放,但是每次第一个视频文件播放完以后就不自动播放第二个视频了。
原因是拼接的 2 个 ts 文件的时间不连续了,所以不会自动续播。
在两个拼接的视频文件之间加上 #EXT-X-DISCONTINUITY。如下所示:
#EXTINF:6
https:xxxx.ts
#EXT-X-DISCONTINUITY // 两断不连续的视频中间加上 #EXT-X-DISCONTINUITY tag
#EXTINF:6
https:xxxx.ts
https://stackoverflow.com/questions/64842167/can-i-merge-multiple-m3u8-files-into-one-m3u8-file
https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-23#section-4.3.2.3