Node-Media-Server
Node-Media-Server copied to clipboard
动态拉流模式下,如果多个客户端播放一个源,在依此关闭时,最后一个关闭后不能准确触发停止拉流进程
可能的原因:flv session 中触发的 donePlay事件,传递的sessionid是flv session id,在relay server 中的 onDonePlay 方法中通过id获取 relaySession,只有与第一次打开的flv session id一致的relaySession id。当先关闭第一次打开的flv session时,session有值,players.size >0 不会触发session.end;当后面再关闭其他 flv session时, session 为空,导致不能进入session.end(); https://github.com/illuspas/Node-Media-Server/blob/cd36fec55ceead7b9f9ea3a9ff8fb72dbd497df3/node_flv_session.js#L91 https://github.com/illuspas/Node-Media-Server/blob/master/node_relay_server.js#L144
第一次描述有误,重新测试后,调整了问题描述
我也遇到了这个问题,解决办法也有,就是做一个定时任务,每隔两分钟运行一次,定时任务的具体处理过程是循环context.sessions这个Map,然后把session.players.size为0的调用其end()方法结束即可,他这个不结束的话,ffmpeg进行一直都在,占用服务器内存不说也占用着服务器的带宽
我也遇到了这个问题,解决办法也有,就是做一个定时任务,每隔两分钟运行一次,定时任务的具体处理过程是循环context.sessions这个Map,然后把session.players.size为0的调用其end()方法结束即可,他这个不结束的话,ffmpeg进行一直都在,占用服务器内存不说也占用着服务器的带宽
你好,这个有参考代码么,没写过node服务,想改找不到位置。。。