RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台
2016-04-28 00:51
453 查看
EasyRTSPClient是EasyDarwin开源流媒体团队开发、提供的一套非常稳定、易用、支持重连的RTSPClient工具,接口调用非常简单,再也不用像调用live555那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY的复杂流程,担心内存释放的问题了,全平台支持(包括Windows/Linux 32&64,ARM各平台,Android,IOS),接口简单且成熟稳定!
调用示例
EasyRTSPClient:以RTSPClient的形式,从RTSP URL将音视频获取到本地;Windows编译方法,
Visual Studio 2010 编译:./EasyRTSPClient-master/win/EasyRTSPClient.sln
Linux编译方法,
chmod +x ./Buildit ./Buildit
EasyDarwin:您也可以参考EasyDarwin中EasyHLSModule(HLS直播模块)、EasyRelayModule(RTSP转发模块)对EasyRTSPClient库的调用方法,详细请看:https://github.com/EasyDarwin/EasyDarwin;
我们同时提供Windows、Linux、ARM、Android、IOS版本的libEasyRTSPClient库:EasyRTSPClient SDK商业使用需要经过授权才能使用,商业授权方案: http://www.easydss.com/EasyRTSPClient.html;个人及非商业用途可通过邮件发送至support@easydarwin.org进行申请,注意ARM版本需要附上交叉编译工具链,我们会帮您具体编译,目前Github已经更新支持的平台有:
支持平台 | 芯片 | 目录位置 |
Windows | x86 | ./Lib/ |
Windows | x64 | ./Lib/x64/ |
Linux | x86 | ./Lib/ |
Linux | x64 | ./Lib/x64/ |
海思 | arm-hisiv100-linux | ./Lib/hisiv100/ |
海思 | arm-hisiv200-linux | ./Lib/hisiv200/ |
海思 | arm-hisiv400-linux | ./Lib/hisiv400/ |
Android | armeabi | EasyPlayer libEasyRTSPClient.so |
邮件获取更多平台版本 |
调用流程
设计方法
EasyRTSPClient参考live555 testProg中的testRTSPClient示例程序,将一个live555 testRTSPClient封装在一个类中,例如,我们称为Class EasyRTSPClient,在EasyRTSP_Init接口调用时,我们新建EasyRTSPClient对象、在EasyRTSP_OpenStream接口调用时,我们建立线程,装载live555的TaskScheduler->SingleStep(0),然后再进行RTSP的具体流程,这个就可以直接用testRTSPClient的使用流程了、关闭RTSPClient,我们调用EasyRTSP_CloseStream接口,内部实现参考testRTSPClient中的shutdownStream方法,最后deleteEasyRTSPClient类,这样整个过程就完整了!
RTSPSourceCallBack数据回调说明
EasyRTSPClient可以回调出多种类型的数据:#define EASY_SDK_VIDEO_FRAME_FLAG /* 视频帧数据 */ #define EASY_SDK_AUDIO_FRAME_FLAG /* 音频帧数据 */ #define EASY_SDK_EVENT_FRAME_FLAG /* 事件帧数据 */ #define EASY_SDK_RTP_FRAME_FLAG /* RTP帧数据 */ #define EASY_SDK_SDP_FRAME_FLAG /* SDP帧数据 */ #define EASY_SDK_MEDIA_INFO_FLAG /* 媒体类型数据 */
EASY_SDK_VIDEO_FRAME_FLAG数据可支持多种视频格式:
#define EASY_SDK_VIDEO_CODEC_H265 /* H265 */ #define EASY_SDK_VIDEO_CODEC_H264 /* H264 */ #define EASY_SDK_VIDEO_CODEC_MJPEG /* MJPEG */ #define EASY_SDK_VIDEO_CODEC_MPEG4 /* MPEG4 */
视频帧标识支持
#define EASY_SDK_VIDEO_FRAME_I /* I帧 */ #define EASY_SDK_VIDEO_FRAME_P /* P帧 */ #define EASY_SDK_VIDEO_FRAME_B /* B帧 */ #define EASY_SDK_VIDEO_FRAME_J /* JPEG */
当回调出RTSP_FRAME_INFO->codec为EASY_SDK_VIDEO_CODEC_H264数据,RTSP_FRAME_INFO->type为EASY_SDK_VIDEO_FRAME_I关键帧时,我们输出的数据结构为SPS+PPS+I的组合:
|---------sps---------|-------pps-------|---------------I Frame---------------| | | | | 0-----------------reserved1---------reserved2-------------------------------length
EASY_SDK_AUDIO_FRAME_FLAG数据可支持多种音频格式:
#define EASY_SDK_AUDIO_CODEC_AAC /* AAC */ #define EASY_SDK_AUDIO_CODEC_G711A /* G711 alaw*/ #define EASY_SDK_AUDIO_CODEC_G711U /* G711 ulaw*/ #define EASY_SDK_AUDIO_CODEC_G726 /* G726 */
获取更多信息
邮件:support@easydarwin.orgWEB:www.EasyDarwin.org
QQ交流群:465901074
Copyright © EasyDarwin.org 2012-2016
相关文章推荐
- 机器学习笔记04:逻辑回归(Logistic regression)、分类(Classification)
- react -- 计时器
- sql执行顺序
- Spring 框架使用QQ邮箱发送邮件
- 硬盘存储原理
- CF初体验--Round #348,D
- Office2016 转换零售版为VOL版
- Java动态类加载与重载
- Lable文字自适应宽高
- Openstack小试牛刀之Keystone
- 使用Cydia Substrate 从Native Hook Android Java世界
- 基于C语言的面向对象编程
- 动态语言和静态语言的比较
- Android高效ImageLoader的实现
- Linux学习日志(三)
- DNS 服务
- servlet过滤器使用
- 指针与数组的扑朔迷离,你知道吗?
- file的getPath getAbsolutePath和getCanonicalPath的不同
- ubuntu下使用SQLite3的基本命令