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_ERROREASY_SDK_EVENT_CODEC_EXIT 两种回调;

EasyPlayer

EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveXnpAPI Web插件)、Android平台,iOS平台,视频支持H.264H.265MPEG4MJPEG,音频支持G711AG711UG726AAC,支持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流重连问题的解释的更多相关文章

  1. 前端Web浏览器基于Flash如何实时播放监控视频画面(一)之获取监控摄像头的RTSP流

    本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 获取 现在市场上普见的摄像头都支持RTSP协议,如果你不懂什么是RTSP协议, ...

  2. EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决

    在之前的博客<EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见>中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意 ...

  3. [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题

    出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...

  4. 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案

    前言 再小的技术点也会有他的市场! 一直以来,都有一些不被看好,认为是成本太高,无法大规模展开的软件和产品形态,就好比每一座城市都会有他的著名小吃一样,即使是慕名而来的人源源不断,受众群体也总是有限, ...

  5. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  6. EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug

    本文转自EasyDarwin团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/75717097 最近发现某些手机在运行EasyPlaye ...

  7. EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)

    本文转自EasyDarwin开源团队成员Sword的博客:http://blog.csdn.net/swordtwelve EasyPlayer(Windows) v2.0.17.0709版本又更新发 ...

  8. EasyPlayer RTSP Windows(with ActiveX/OCX插件)播放器支持H.265播放与抓图功能

    EasyPlayer作为业界一款比较优秀的RTSP播放器,一直深受用户的好评,经过了近3年的开发和迭代,从一开始的简单PC版本的RTSP播放功能,到如今支持PC(支持ocx插件).Android.iO ...

  9. EasyPlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别

    EasyPlayer-RTSP windows播放器支持D3D和GDI两种渲染方式,其中D3D支持格式如下: DISPLAY_FORMAT_YV12 DISPLAY_FORMAT_YUY2 DISPL ...

随机推荐

  1. BZOJ2748(DP)

    非常简单的DP题.类似背包的操作,按照音量改变值进行状态转移即可. #include <bits/stdc++.h> using namespace std; #define REP(i, ...

  2. 洛谷——P1977 出租车拼车

    题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...

  3. Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: 对文件系统的访问提供了全面的支持 提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Ja ...

  4. 判断vps类型

  5. 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(三)

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第六章 Realm及相关对象(三) 1.准备3个Realm MyR ...

  6. 使用Shiro

    一.架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙.Shiro的应用不依赖任何容器,它也可以在JavaSE下使用.但是最常用的环境还是JavaEE.下面以 ...

  7. java8新特性学习笔记(二) 流的相关思想

    流是什么 流是Java API的新成员,他允许你以声明的方式处理数据集合,就现在来说,可以把他们看成遍历数据集合的高级迭代器.此外,流还可以透明地并行处理,你无须写任何多线程代码. 下面例子是新老AP ...

  8. jquery Table基础操作

    鼠标移动行变色     $("#table1 tr").hover(function(){          $(this).children("td").ad ...

  9. sublime添加sass编译

    首先安装Ruby环境sass是基于ruby的产物,因此在安装sass前需要先安装ruby,如果用命令方式编译Sass也是必须安装ruby的.命令行编译sass见!下载Ruby windows 安装包: ...

  10. Windows下Tomcat+nginx配置证书实现登录页https访问

    最近公司出于安全考虑,需要将登录页做成https访问,其他页面仍采用http访问,环境是Linux平台,web服务器采用Tomcat + Nginx.之前没接触过nginx,这两天网上查资料,试了好多 ...