【开发踩坑】EXT-X-DISCONTINUITY 合并多个 m3u8 文件到一个 m3u8

文章目录

    • 背景
    • 问题
    • 原因
    • 解决方案
    • 参考资料

背景

因业务需求,需要将多个 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

你可能感兴趣的:(开发踩坑,m3u8)