解决客户端串流现象的方法及系统与流程

文档序号:29941756发布日期:2022-05-07 14:49阅读:365来源:国知局
解决客户端串流现象的方法及系统与流程

1.本技术涉及视频传输技术领域,尤其涉及一种解决客户端串流现象的方法及系统。


背景技术:

2.出现媒体串流的原因是服务器往指定端口上发送视频流,但是由于网络原因,在客户端往服务器发送的关闭的命令成功后,由于网络的原因导致服务器没有成功向设备端发送关闭推流的消息,导致前端设备没有中断视频流的发送,仍然往指定端口上发送视频流。在开启下一次视频流的请求的时候,服务器端口仍然在接收视频流,和新的视频流会产生重叠,所以混合的视频流都会发送到客户端,导致客户端会出现不同场景的影像,出现串流的现象。
3.目前解决串流的方案是在服务器中不断的开辟新的端口,这样确实能够解决出现串流的现象;但是在监控设备过多的时候,就会不断的消耗接口资源,并且没有关闭的前端设备在不断的发送视频流给服务器,造成网络资源的巨大消耗。


技术实现要素:

4.本技术提供了一种解决客户端串流现象的方法及系统,其技术目的是解决客户端的串流现象,提高端口利用率,避免网络资源浪费。
5.本技术的上述技术目的是通过以下技术方案得以实现的:
6.一种解决客户端串流现象的方法,包括:
7.客户端发起实时流请求,服务器根据所述实时流请求的设备id号建立rtsp信令控制模块和sip信令控制模块;其中,rtsp信令控制模块对定时器和端口列表进行维护;
8.在所述rtsp信令控制模块中设置rtsp会话的状态位列表,该rtsp会话的状态位列表中的状态位包括:初始化状态、发送setup命令成功状态、发送play命令成功状态、发送pause命令成功状态和发送teardown命令成功状态;在所述sip信令控制模块中设置sip会话的状态位列表,该sip会话的状态位列表中的状态位包括:初始化状态、等待状态、通道建立成功状态、媒体流正在分发状态和通道释放状态;
9.当sip信令控制模块的状态位更新为通道建立成功状态时,sip信令通道建立成功,然后服务器从所述端口列表中分配出一个会话端口,前端设备向所述会话端口分发视频流;
10.定时器定时检测rtsp信令控制模块和sip信令控制模块的状态位,当检测到rtsp信令控制模块的状态位为发送teardown命令成功状态,而sip信令控制模块的状态位不是通道释放状态时,服务器向所述会话端口发送终止会话请求,直至检测到会话关闭;或当检测到sip信令控制模块的状态位为通道释放状态,而rtsp信令控制模块的状态位不是发送teardown命令成功状态时,服务器调用回调函数通知客户端重新发送关闭会话请求,直至检测到会话关闭。
11.进一步地,当定时器检测到rtsp信令控制模块的状态位为发送teardown命令成功状态,或者sip信令控制模块的状态位是通道释放状态时,所述会话端口的会话关闭,所述会话端口返回至所述端口列表待重新分配。
12.一种解决客户端串流现象的系统,包括:
13.客户端,发起实时流请求;
14.服务器,包括定时器、端口列表、rtsp信令控制模块和sip信令控制模块,rtsp信令控制模块对定时器和端口列表进行维护,定时器对rtsp信令控制模块和sip信令控制模块的状态位进行定时检测;
15.其中,rtsp信令控制模块和sip信令控制模块是根据所述实时流请求的设备id号建立的;rtsp信令控制模块中设置有rtsp会话的状态位列表,该rtsp会话的状态位列表中的状态位包括:初始化状态、发送setup命令成功状态、发送play命令成功状态、发送pause命令成功状态和发送teardown命令成功状态;sip信令控制模块中设置有sip会话的状态位列表,该sip会话的状态位列表中的状态位包括:初始化状态、等待状态、通道建立成功状态、媒体流正在分发状态和通道释放状态;
16.前端设备,当sip信令控制模块的状态位更新为通道建立成功状态时,sip信令通道建立成功,然后服务器从所述端口列表中分配出一个会话端口,向所述会话端口分发视频流;
17.前端设备向所述会话端口分发视频流后,定时器定时检测rtsp信令控制模块和sip信令控制模块的状态位,当检测到rtsp信令控制模块的状态位为发送teardown命令成功状态,而sip信令控制模块的状态位不是通道释放状态时,服务器向所述会话端口发送终止会话请求,直至检测到会话关闭;或当检测到sip信令控制模块的状态位为通道释放状态,而rtsp信令控制模块的状态位不是发送teardown命令成功状态时,服务器调用回调函数通知客户端重新发送关闭会话请求,直至检测到会话关闭。
18.本技术的有益效果在于:本技术所述的解决客户端串流现象的方法及系统,通过定时器对rtsp信令控制模块和sip信令控制模块的状态位进行检测,能够有效的关闭前端设备使其不再往指定端口传输视频流,使得客户端再次请求视频流时不会出现串流的现象,极大的提升了用户的体验感;同时可以根据端口列表中空闲的端口资源,复用已经开辟的网络端口,不需要重新开辟端口,有效的避免了网络资源的浪费。
附图说明
19.图1为本技术所述解决客户端串流现象的方法及系统的框架示例图。
具体实施方式
20.下面将结合附图对本技术技术方案进行详细说明。
21.为了便于理解,以下通过一个具体实施例来对本技术进行说明。
22.服务器正常启动,客户端发起实时流请求,服务器会根据实时流请求的设备id号建立一个rtsp会话的rtsp信令控制模块cstreamrtsppushsession,在cstreamrtsppushsession中维护一个定时器cac_timer_manager和一个端口列表udp_port_list。
23.新建立的rtsp信令控制模块cstreamrtsppushsession中有个状态位列表,分别为rtsp会话的:初始化状态rtsp_session_status_init、发送setup命令成功状态rtsp_session_status_setup、发送play命令成功状态rtsp_session_status_play、发送pause命令成功状态rtsp_session_status_pause、发送teardown命令成功状态rtsp_session_status_teardown。
24.服务器还会根据实时流请求的设备id号建立一个sip信令控制模块,新建立的sip信令模块会维护一个状态位列表,分别为sip会话的:初始化状态sip_session_status_init、等待状态sip_session_status_wait_start、通道建立成功状态sip_session_status_wait_channel_reday、媒体流正在分发状态sip_session_status_dispatching、通道释放状态sip_session_status_released。
25.当sip信令控制模块的状态位更新为通道建立成功状态sip_session_status_wait_channel_reday时,sip信令通道建立成功,服务器会从udp_port_list列表中分配出来一个会话端口,前端设备会向这个会话端口中分发视频流。同时,定时器线程开始正常工作,定时的去检测rtsp信令控制模块和sip信令控制模块的状态位;定时器的时间可以设置。
26.当检测到rtsp信令控制模块的状态位是rtsp_session_status_teardown,而sip信令控制模块的状态位不是sip_session_status_released时,这个时候需要平台往指定的会话端口发送终止会话请求。
27.或者,当检测sip信令控制模块的状态位为sip_session_status_released,而rtsp信令控制模块的状态位不是rtsp_session_status_teardown时,可以调用回调函数通知客户端重新发送关闭会话请求。
28.当定时器检测到rtsp信令控制模块的状态位为rtsp_session_status_teardown,且sip信令控制模块的状态位是sip_session_status_released时,会话端口的会话关闭,同时会话端口返回至端口列表待重新分配。
29.关于端口列表udp_port_list,在服务器初始化的时候通过接口函数creatertpudpport来开辟端口资源,资源的路数可以根据实际需求从配置文件中读取,然后将端口资源存放到列表udp_port_list中。如果端口资源已经使用再将使用过的端口资源存放到列表m_usedudpportlist,而当端口的会话关闭后,该端口可重新分配使用;如果端口资源没有使用,则将端口资源存放到列表m_unusedudpportlist中,这样就可以避免端口资源浪费的现象,让系统资源配置更加合理。
30.以上为本技术示范性实施例,本技术的保护范围由权利要求书及其等效物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1