我尝试将多个流连接在一起,而无需使用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结束。
提前致谢。
答案 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