我的工作流程是:
为了准备不同的场景,我迫使App2在测试传输期间重新启动,在这种情况下,App1仍从ffmpeg接收流,并尝试将其发送到App2,在app2准备就绪后,此链接再次建立,App1继续发送流到App2,但客户端没有视频。
chunklist.m3u8
列出许多块,直到第17个:media-u3510ez40_17.ts
media-u1ofkjj9w_1.ts
问题是没有视频,网络流量表明浏览器没有下载列出的新块。
[chunklist.m3u8
继续添加新的块,但是浏览器不会下载其中的任何块...直到出现第18个块...并且视频重新启动。
我尝试了很多次,问题是一样的,在重新启动之前,最后一个块的编号为N
,并且在重新启动之后,直到到达deN+1
Chunk之前,没有视频,但是ID不同。
我不知道此问题是否在Wowza,Cloudfront或HLS.js播放器上:/
chunklist.m3u8
重新启动之前:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:9
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:8.333,
media-u3510ez40_1.ts
#EXTINF:8.333,
media-u3510ez40_2.ts
#EXTINF:8.334,
.
.
.
media-u3510ez40_16.ts
#EXTINF:8.333,
media-u3510ez40_17.ts
chunklist.m3u8
重新启动后:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:17
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:16.396,
media-u1ofkjj9w_1.ts
#EXTINF:8.333,
media-u1ofkjj9w_2.ts
.
.
.
media-u1ofkjj9w_16.ts
#EXTINF:8.333,
media-u1ofkjj9w_17.ts
#EXTINF:8.333,
media-u1ofkjj9w_18.ts
您需要将cupertinoCalculateChunkIDBasedOnTimecode属性设置为true。引用此:https://www.wowza.com/docs/how-to-configure-apple-hls-packetization-cupertinostreaming
另外,请注意,这对于将同步时间码发送到Wowza的编码器会有所帮助。对于不发送同步时间码的编码器,无论是否发送编码器,我都建议实施绝对时间码。这将帮助应用程序在重启后从N + 1个块号中恢复。
以下页面将帮助您正确配置它。http://thewowza.guru/how-to-set-stream-timecodes-to-absolute-time/
关于会话ID更改部分,当使用Wowza作为Cloudfront分发的来源时,您需要启用httpOriginMode并禁用httpRandomizeMediaName以使其正常运行。下面的Wowza文档将帮助您正确设置它,https://www.wowza.com/docs/how-to-configure-a-wowza-server-as-an-http-caching-origin