关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释
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!
获取更多信息
Copyright © EasyDarwin.org 2012-2017

关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释的更多相关文章
- 前端Web浏览器基于Flash如何实时播放监控视频画面(一)之获取监控摄像头的RTSP流
本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 获取 现在市场上普见的摄像头都支持RTSP协议,如果你不懂什么是RTSP协议, ...
- EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决
在之前的博客<EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见>中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意 ...
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...
- 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案
前言 再小的技术点也会有他的市场! 一直以来,都有一些不被看好,认为是成本太高,无法大规模展开的软件和产品形态,就好比每一座城市都会有他的著名小吃一样,即使是慕名而来的人源源不断,受众群体也总是有限, ...
- VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时
之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...
- EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
本文转自EasyDarwin团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/75717097 最近发现某些手机在运行EasyPlaye ...
- EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
本文转自EasyDarwin开源团队成员Sword的博客:http://blog.csdn.net/swordtwelve EasyPlayer(Windows) v2.0.17.0709版本又更新发 ...
- EasyPlayer RTSP Windows(with ActiveX/OCX插件)播放器支持H.265播放与抓图功能
EasyPlayer作为业界一款比较优秀的RTSP播放器,一直深受用户的好评,经过了近3年的开发和迭代,从一开始的简单PC版本的RTSP播放功能,到如今支持PC(支持ocx插件).Android.iO ...
- EasyPlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别
EasyPlayer-RTSP windows播放器支持D3D和GDI两种渲染方式,其中D3D支持格式如下: DISPLAY_FORMAT_YV12 DISPLAY_FORMAT_YUY2 DISPL ...
随机推荐
- Linux系统安装JDK和Tomcat
首先先准备好需要安装的包 下载Linux JDK 和Tomcat 我这里下载的是Linux系统下的后缀名为tar.gz包 1.压缩命令: 命令格式:tar -zcvf 压缩文件名.tar.gz 被压缩 ...
- IIS 7 Access to the path ‘c:\windows\system32\inetsrv\’ is denied
https://randypaulo.wordpress.com/2011/09/13/iis-7-access-to-the-path-cwindowssystem32inetsrv-isdenie ...
- 通信API、使用Web Workers处理线程
1.跨文档消息传输 要想接受从其他的窗口那里发过来的消息,就必须对窗口对象的message事件进行监视. w ...
- UIScrollView/UITableView 一直显示滚动条(ScrollBar Indicators)、滚动条Width(宽度)、滚动条Color(颜色)
在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口,一直都是很少的.除了能自定义简单的样式(UIScrollViewIndicatorS ...
- cocos2dx 2.x新建项目
举例: cocos2d-x-2.2.6/tools/project-creator 进入 这个文件夹 chmod 777 project-cereator.py ./create_project.py ...
- 2016summer 训练第一场
A.http://acm.hdu.edu.cn/showproblem.php?pid=5538 求表面积,只需要将所有的1*1的小块扫描一遍.将每一个块与他相邻四周进行比较,如果该快高度大,则将该快 ...
- django导出数据到excel
import xlwt,StringIodef dumpData(request): #获取数据 activitys = Activity.objects.all().order_by('id') i ...
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
仅仅是学习记录.把我知道的都说出来 一.值栈的作用 记录处理当前请求的action的数据. 二,小样例 有两个action:Action1和Action2 Action1有两个属性:name和pass ...
- swfit各种Function表现形式
//: Playground - noun: a place where people can play import UIKit //多返回值函数 func countss(string: Stri ...
- JAVA Eclipse开发Android如何让屏幕保持为竖直或水平状态
在Manifest.xml文件中找到activity部分,添加下面这一行 android:screenOrientation="landscape" landscape是横向,po ...