将.ts视频剪辑附加到m3u8 HLS流

时间:2018-01-12 11:48:33

标签: video ffmpeg hls flowplayer m3u8

我尝试将多个流连接在一起,而无需使用m3u8清单重新编码视频。

每个视频的开头都是相同的,最后一个视频的中间部分有7000多种。我想要做的是创建7000+ m3u8文件,每个文件将通用介绍,定制中间部分和通用端合并在一起形成一个HLS流。这可能吗?

这是由ffmpeg生成的m3u8文件:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.520000,
3_1080p_000.ts
#EXTINF:9.600000,
3_1080p_001.ts
#EXTINF:9.600000,
3_1080p_002.ts
#EXTINF:9.600000,
3_1080p_003.ts
#EXTINF:11.520000,
3_1080p_004.ts
#EXTINF:8.440000,
3_1080p_005.ts
#EXT-X-ENDLIST

我尝试在最后添加一个额外的剪辑(也在开头),其持续时间为8.440000秒,如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.520000,
3_1080p_000.ts
#EXTINF:9.600000,
3_1080p_001.ts
#EXTINF:9.600000,
3_1080p_002.ts
#EXTINF:9.600000,
3_1080p_003.ts
#EXTINF:11.520000,
3_1080p_004.ts
#EXTINF:8.440000,
3_1080p_005.ts
#EXTINF:8.440000,
4_1080p_005.ts
#EXT-X-ENDLIST

当我尝试运行时,flowplayer会检测更新的长度并播放流,但是当它播放附加的剪辑时,它会跳回到开头,就好像它已经停止一样。任何帮助都将受到大力赞赏,否则我将不得不完整地呈现每个视频,而且还要做7000多个!

问题流可供查看here。它完全以1分钟结束,而不是以1:08结束。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这里的问题很可能源于4_1080p_005.ts块不是3_1080p_005.ts时间戳的直接延续。解码器检测到这些块之间的流中断并且无法继续。

请查看考虑这些情况的HTTP Live Streaming规范,并为m3u8清单提供EXT-X-DISCONTINUITY标记,指示解码器存在此类不连续性https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.3

与您的情况相关的代码段

  

EXT-X-DISCONTINUITY标记表示之间存在不连续性      跟随它的媒体段和它之前的媒体段。

     

其格式为:

     

#EXT-X-DISCONTINUITY

     

如果有变化,必须出现EXT-X-DISCONTINUITY标签      具有以下任何特征:

     

o文件格式

     

o曲目的编号,类型和标识符

     

o时间戳序列

尝试修改m3u8清单并在这两个受影响的块之间添加标记,如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.520000,
3_1080p_000.ts
#EXTINF:9.600000,
3_1080p_001.ts
#EXTINF:9.600000,
3_1080p_002.ts
#EXTINF:9.600000,
3_1080p_003.ts
#EXTINF:11.520000,
3_1080p_004.ts
#EXTINF:8.440000,
3_1080p_005.ts
#EXT-X-DISCONTINUITY
#EXTINF:8.440000,
4_1080p_005.ts
#EXT-X-ENDLIST