Live555 的断网重连问题
来源:互联网 发布:csdn 算法岗面试 编辑:程序博客网 时间:2024/05/29 23:22
点击打开链接
1)重连死锁
1.1)重连时如果将解码回调线程放在NetSdk里面,使用两个Event,当接受线程结束时,发送接受线程结束的信号,然后在解码线程里面判断接收线程信号 ,如果有信号,就发送一个退出解码线程,发送一个解码结束的信号;
1.2)当超时重连时,首先Stop码流,然后Restart码流;停止码流时,将eventLoopWatchVariable=1;让数据接收线程顺利退出;同时在stop函数里面等待解码线程结束,
WaitForThreadExit(m_DecodeExitEvent);
这时会造成死锁;因为Live555是单线程的,在超时函数中需要等待本线程的结束,造成死锁;
解决办法:
1)使用单独的心跳线程来实现重连功能或者在回调数据给客户端的的解码线程里面实现重连功能;
2)网络断开判断方法 使用延迟队列来判断,初始化时候调用noteLiveness,然后每次收到Sink的一帧数据时,再次调用noteLiveness,这样如果网络断开,超时后,就能判断出来;在数据接收线程的doEventLoop后面将重连标记置位:
m_bReConnect=true;
3)断网重连的工作不能放在livenessTimeoutTask这个函数里面,不然会造成重连死锁,因为live555是单线程的;只能放在其它的线程里面实现重连;我是放在回调给客户端的解码线程里面实现重连;
阅读全文
0 0
- Live555 的断网重连问题
- 新版live555的问题
- ubuntu 编译live555的问题
- live555移植过程中出现的问题
- live555 arm linux遇到的问题
- live555 问题汇总
- live555 rtsp延时问题
- live555 rtsp流丢包问题
- live555 在网络异常断开后卡死的问题
- 关于FFMPEG + Live555 = H.264的问题[
- live555组播H264及sps和pps的问题
- live555下获取ip为0的问题
- 移植live555到android下遇到的问题
- android上live555获取IP为0.0.0.0的问题
- [live555]rtsp直播基于live555的实现
- [live555]rtsp直播基于live555的实现
- live555的两个循环
- live555的使用
- C语言和java的不同
- hadoop2.8.2命令手册
- vertical-align 的值
- activiti 7个服务的理解
- 异常处理上机题1
- Live555 的断网重连问题
- 自从我用了这个接口文档版本管理,我的组长多活了几年
- AVAudioPlayer 开始和暂停
- vue中常用组件
- Java删除数组指定元素,并压缩数组
- HDU 1257(动态规划?贪心)
- html之position总结
- Could not generate DH keypair,驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接
- 第二十八讲项目1.1项目1-M$pszi$y是嘛意思?