关于ZLmediakit无人观看处理

 1 ZLM接收推流或者代理拉流。流注册成功后会先触发一次无人观看,用于应对注册流之后,没有人拉流观看的情况;

 这里会生成一个定时器,如果到时间了没人看就触发无人观看 ;streamNoneReaderDelayMS=30000

如果本次触发的无人观看(hook)你不处理,那就不会再次触发了;除非你有客户端拉流播放,然后reader从有变成无,才会再次触发无人观看;

 2 关于触发无人观看的返回的协议类型(来源于issue)

无人观看事件不同协议只会触发一次(不管转换为多少种协议了) 但是触发时的协议scheam是随机的 看那种协议最晚注册。
当然后续从有人看变成无人看,触发协议scheam为最后一名观看者使用何种协议。总的来说,这个hook可以不关注scheam参数

3  on_stream_none_reader

 4 关于无人观看人数统计

除了统计MultiMediaSourceMuxer外, 还统计不经过MultiMediaSourceMuxer直接代理生成的流的观看者人数MediaSourceEvent::onReaderChanged()中也会统计;注意录像如果当做观察者,录像也会是一个reader,可以在配置文件中设置录像是否作为观察者  EX:#是否将mp4录制当做观看者 mp4_as_player=0

 

5 流程图  【ZLM数据源以UDP形式推出去,接收端禁掉收数据,这个发数据的ZLM可能不会触发无人观看。详细没有测试】

 6  HLS直播触发无人观看需要 等到cookie过时,这个时间可以在配置文件里修改;HLS播放时候ZLM会传递一个ZL-cookie给播放端,这个Cookie用于这路TS播放的持续校验用于ZLM内部更新cookit过期时间(刷新定时器);如果客户端不携带cookie会导致每次重新创建cookit构造新的std::make_shared<HlsCookieData>(media_info, info);导致最终有很多hls reader

posted on   邗影  阅读(1351)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
历史上的今天:
2022-07-19 如何判断Linux的动态库是debug还是release?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示