关于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 ...
随机推荐
- Codeforces Gym100735 D.Triangle Formation (KTU Programming Camp (Day 1) Lithuania, Birˇstonas, August 19, 2015)
日常训练题解 D.Triangle Formation You are given N wooden sticks. Your task is to determine how many triang ...
- Jenkins连接git时出现“Failed to connect to repository : Command ... HEAD" returned status code 128:”的问题解决
网上说的解决方法如下: 其实生成ssh时不应该使用当前用户去生成ssh,而是使用jenkins这个用户去生成ssh,然后再去git服务器上配置你生成key,最后再jenkins上配置返回给你的key. ...
- 【mob】Android短信验证+源码
在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...
- C++/C# 托管扩展 更改概要 [转]
源文 :https://msdn.microsoft.com/zh-cn/library/ms235298%28v=vs.100%29.aspx Visual Studio 2010 其他版本 此概要 ...
- nginx phase handler的原理和选择
nginx phase handler的原理和选择 PHASE HANDLER的种类 nginx在接收并解析完请求行.请求头之后.就会依次调用各个phase handler. phase handle ...
- linux中脚本扑捉(trap)信号问题
扑捉ctrl+c信号: #!/bin/bash trap ; function trap() { echo "You press Ctrl+C."; echo "Exit ...
- 远程桌面连接centos 7
首先安装tigervnc-server: yum install tigervnc-server 安装好后,设置 vi /etc/sysconfig/vncservers [root@gateway- ...
- bbed初体验
bbed能够直接查看或改动数据文件.听起来非常强大,以下体验一下,安装方法网上一搜一大把,我的环境是centos+10G的 bbed參考文档:http://pan.baidu.com/s/1hqCC6 ...
- 第一个Swift程序Hello World
import Foundation print("Hello, World!") print("I am here!") var arr=["项羽&q ...
- mycat 分页慢原理解析、mycat跨事务解惑、mycat注解调用存储过程分析
1结合Mycat日志,分析select * from travelrecord order by id limit100000,100 的运行过程,解释下当limit M,N中的M非常大的情况下.为什 ...