关于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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2022-07-19 如何判断Linux的动态库是debug还是release?