需求背景
有多个大容量视频,当分别转换为m3u流媒体后,形成了多个割裂的m3u,如何合并到一个后,在同一个视频播放呢,这就需要编辑m3u文件内容了。
操作步骤
主要是用#EXT-X-DISCONTINUITY进行拼接,同时注意修改最大值,用简单的例子说明:
第一个m3u文件:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:69 #比比哪个大
#EXT-X-MEDIA-SEQUENCE:1001
#EXTINF:60.000000,
xmt202406_11001.ts
#EXTINF:60.000000,
xmt202406_11002.ts
#EXTINF:60.000000,
xmt202406_11003.ts
#EXT-X-ENDLIST #从上边插入分隔标志和别的m3u文件内容
第二个m3u文件:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:68 #比比哪个大
#EXT-X-MEDIA-SEQUENCE:1001 #从下边开始复制
#EXTINF:60.000000,
xmt202406_21001.ts
#EXTINF:60.000000,
xmt202406_21002.ts
#EXTINF:67.880000,
xmt202406_21003.ts
#EXT-X-ENDLIST #复制上边的
第三个m3u文件:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:70 #比比哪个大
#EXT-X-MEDIA-SEQUENCE:1001 #从下边开始复制
#EXTINF:60.000000,
xmt202406_31001.ts
#EXTINF:60.000000,
xmt202406_31002.ts
#EXTINF:70.000000,
xmt202406_31003.ts
#EXT-X-ENDLIST #复制上边的
找出#EXT-X-TARGETDURATION的最大值为70,
复制第一个m3u文件作为新文件,
把其他需要合并的文件中#EXT-X-MEDIA-SEQUENCE和#EXT-X-ENDLIST之间的内容
插入到新文件#EXT-X-ENDLIST的前边,
每个后加的内容之前需要加#EXT-X-DISCONTINUITY进行分割标识。
合并后如下图:
#EXTM3U # 不动
#EXT-X-VERSION:3 # 不动
#EXT-X-TARGETDURATION:70 #这里改成最大值!!!
#EXT-X-MEDIA-SEQUENCE:1001 # 不动
#EXTINF:60.000000, # 第1个文件内容
xmt202406_11001.ts # 第1个文件内容
#EXTINF:60.000000, # 第1个文件内容
xmt202406_11002.ts # 第1个文件内容
#EXTINF:60.000000, # 第1个文件内容
xmt202406_11003.ts # 第1个文件内容
#EXT-X-DISCONTINUITY # 加上分隔标识,如果不加后边部分无法正常播放!!!
#EXTINF:60.000000, # 第2个文件内容,复制过来的
xmt202406_21001.ts # 第2个文件内容,复制过来的
#EXTINF:60.000000, # 第2个文件内容,复制过来的
xmt202406_21002.ts # 第2个文件内容,复制过来的
#EXTINF:67.880000, # 第2个文件内容,复制过来的
xmt202406_21003.ts # 第2个文件内容,复制过来的
#EXT-X-DISCONTINUITY # 加上分隔标识,如果不加后边部分无法正常播放!!!
#EXTINF:60.000000, # 第3个文件内容,复制过来的
xmt202406_31001.ts # 第3个文件内容,复制过来的
#EXTINF:60.000000, # 第3个文件内容,复制过来的
xmt202406_31002.ts # 第3个文件内容,复制过来的
#EXTINF:70.000000, # 第3个文件内容,复制过来的
xmt202406_31003.ts # 第3个文件内容,复制过来的
#EXT-X-ENDLIST # 不动
另外提示一下,m3u只是相当于视频索引文件,里面包含了多个ts视频文件路径,将m3u文件处理完后,需要把其他m3u文件里对应ts视频文件放到和第一个m3u的ts文件相同目录即可(或修改成可以访问到的路径),测试是否可以正常播放。
推荐阅读
- 如何将mp4转换成m3u请查看: