编码器重启后,HLS.js/Wowza/Cloudfront浏览器不下载媒体



我的工作流程是:

  • 使用ffmpeg,我向WOWZA App1发送RTMP流
  • App1将流发送到内部第二个应用程序(App2(
  • App2对hls进行代码转换和打包,是Cloudfront分发的起源
  • Cloudfront为用户提供流服务。
  • 用户上的播放器是基于HLS.js的

为了为不同的场景做准备,我在测试传输期间强制App2重新启动,在这种情况下,App1仍在接收来自ffmpeg的流,并试图将其发送到App2,在App2准备好后,再次建立此链接,App1继续将流发送给App2,但客户端没有视频。

  • 在重新启动之前,chunklist.m3u8列出了许多块,直到第17个:media-u3510ez40_17.ts
  • 然后,当App2重新启动chunklist.m3u8时,cloudfront发送404错误。
  • 然后,当App2返回时,chunklist.m3u8会列出一个新的块列表,该列表从1开始,具有新的id:media-u1ofkjj9w_1.ts

问题是没有视频,网络流量显示浏览器没有下载新列出的块。

chunklist.m3u8不断添加新的区块,但浏览器没有下载任何这些。。。直到出现第18块。。。以及视频重新启动。

我尝试了很多次,问题都是一样的,在重新启动之前,最后一个区块有一个数字N,而在重新启动之后,在到达deN+1区块之前没有视频,但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

您需要在Wowza流媒体引擎应用程序的"添加自定义属性"部分将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

相关内容

  • 没有找到相关文章

最新更新