关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释
来源:互联网 发布:2016年十大网络用语 编辑:程序博客网 时间:2024/06/08 04:01
EasyPlayer、EasyRTSPClient是如何设计重连的
首先大概解释一下EasyRTSPClient与EasyPlayer间的关系:EasyRTSPClient是一个专门用于与RTSP流媒体服务器交互的RTSPClient框架,类似于live555的OpenRTSP功能,他能够很好很兼容地实现RTSP OPTIONS、SETUP、PLAY、TEARDOWN等功能,还能进行数据回调的解析和网络事件的回调,更重要的是EasyRTSPClient非常稳定,用于工业级项目3年多,收到了很多用户发来的好评!
EasyPlayer的底层RTSP交互过程全部采用的是libEasyRTSPClient来实现的,这样EasyPlayer只需要专注于获取到的数据的处理过程,而且不需要关注其他的网络协议部分的功能,EasyPlayer只需要调用EasyRTSPClient的相关接口和回调处理,就能控制整个RTSP播放流程的运转了!
重点说一下EasyRTSPClient是如何进行RTSP重连过程的,EasyRTSPClient采用的是线程控制的,内部RTSP采用的是一个独立线程运行获取数据,再在获取到数据后,进行解析回调,外部线程进行时间统计,当超时时间内没有任何视频或者音频数据回调,外部线程会主动干涉内部RTSP线程,重新goto到RTSP初始状态,重新开始连接RTSP Server服务器;
上层对RTSP重连的多种控制方法
我们先观察EasyRTSPClient的事件回调:
‘
else if (_frameType == EASY_SDK_EVENT_FRAME_FLAG)//回调连接状态事件{ // EasyRTSPClient开始进行连接,建立EasyRTSPClient连接线程 if (NULL == _pBuf && NULL == _frameInfo) { printf("Connecting:%s ...\n", fRTSPURL); } // EasyRTSPClient RTSPClient连接错误,错误码通过EasyRTSP_GetErrCode()接口获取,比如404 else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_ERROR) { printf("Error:%s:%d :%s ...\n", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle), _pBuf?_pBuf:"null" ); } // EasyRTSPClient连接线程退出,此时上层应该停止相关调用,复位连接按钮等状态 else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_EXIT) { printf("Exit:%s,Error:%d ...\n", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle)); }}
‘
EasyRTSPClient会在几种情况下回调出状态:
- RTSPClient开始连接的时候;
- RTSPClient连接发送错误的时候会立即反馈回调;
- RTSPClient连接线程退出的时候;
EasyRTSPClient自身有重连功能,如果用户不想麻烦处理重连的过程,完全可以交由EasyRTSPClient内部处理,如果用户想接管重连过程,主要是处理 EASY_SDK_EVENT_CODEC_ERROR 和 EASY_SDK_EVENT_CODEC_EXIT 两种回调;
EasyPlayer
EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,视频支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP,支持硬解码,是一套极佳的RTSP流播放组件;
EasyPlayer Pro版支持RTSP、RTMP、HTTP、HLS等各种流媒体协议播放,稳定、高效、可靠,支持Windows、Android、iOS!
获取更多信息
邮件:support@easydarwin.org
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
- 关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释
- EasyRTSPClient:基于live555封装的支持重连的RTSP客户端RTSPClient
- EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见
- EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
- EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
- 关于rtsp server的连接保持问题
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
- 网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient
- EasyPlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别
- EasyPlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别
- EasyRTMP+EasyRTSPClient实现的多路(支持断线重连)RTSP转RTMP直播推流工具
- EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决
- 关于上一个问题的解释
- EasyPlayer RTSP/RTMP/HTTP/HLS全功能播放器
- EasyPlayer Android RTSP流媒体播放器结构浅析
- EasyPlayer RTSP安卓Android播放器架构简析
- EasyPlayer Android RTSP播放器延迟再优化策略
- EasyPlayer windows RTSP播放器OCX插件使用说明
- EOJ #3441 唐纳德与子串 (Easy)【KMP】
- 二分法插入paix
- Implement PatternToNumber
- C++可变参数宏
- 定义一个平面中的circle类
- 关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释
- Python基础之数据结构(元组,列表,字典)
- Eclipse快捷键 10个最有用的快捷键
- 实验二
- linux安装redis
- Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)
- hive执行报错:Both left and right aliases encountered in JOIN 's1'
- DOM操作倒序排序
- 查找(一)史上最简单清晰的红黑树讲解