正文
简单、高效、稳定、免费的一款标准RTSP/RTP协议直播推送库–EasyPusher
简单、高效、稳定、免费的一款标准RTSP/RTP协议直播推送库–EasyPusher
GitHub:https://github.com/EasyDarwin/EasyPusher
EasyPusher RTSP推流是EasyDarwin开源流媒体团队开发的一款推送流媒体音/视频流给标准RTSP流媒体服务器(如EasyDarwin、Wowza)的流媒体推送库,全平台支持(包括Windows/Linux(32 & 64),ARM各平台,Android、iOS),通过EasyPusher我们就可以避免接触到稍显复杂的RTSP/RTP/RTCP推送流程,只需要调用EasyPusher的几个API接口,就能轻松、稳定地把流媒体音视频数据推送给RTSP流媒体服务器进行处理和转发,EasyPusher经过长时间的企业用户体验,稳定性非常高;更重要的是EasyPusher是免费的!
工作流程
功能版本
- EasyPusher-Android:实时采集安卓摄像头音视频(Android 5.0+支持采集手机桌面屏幕进行直播),进行H.264/AAC编码后,调用EasyPusher进行直播推送,项目地址:https://github.com/EasyDSS/EasyPusher_Android ;
- EasyPusher-iOS:实时采集iOS摄像头音视频进行H.264/AAC编码,调用EasyPusher推送到RTSP流媒体服务器,项目地址:https://github.com/EasyDSS/EasyPusher-iOS ;
- EasyPusher_File:推送本地文件到RTSP流媒体服务器进行文件直播;
- EasyPusher_RTSP:通过EasyRTSPClient库,将RTSP/RTP数据获取到本地,再通过EasyPusher推送到RTSP流媒体服务器;
- EasyPusher_Win:支持本地摄像头和声卡、RTSP流、屏幕捕获、MP4文件通过EasyPusher推送到RTSP流媒体服务器;
Windows编译方法,
Visual Studio 2010 编译:./EasyPusher-master/win/EasyPusher.sln
Linux编译方法,
chmod +x ./Buildit ./Buildit
调用提示:目前的调用示例程序,可以接收参数,具体参数的使用,请在调用时增加**-h**命令查阅,EasyPusher_File示例需要将本地文件copy到可执行文件同目录!
支持平台 芯片 位置名称 Windows x86 ./Lib/x86/ Windows x64 ./Lib/x64/ Linux x86 ./Lib/x86/ Linux x64 ./Lib/x64/ 海思 arm-hisiv100-linux ./Lib/hisiv100/ 海思 arm-hisiv200-linux ./Lib/hisiv200/ 海思 arm-hisiv300-linux ./Lib/hisiv300/ 海思 arm-hisiv400-linux ./Lib/hisiv400/ 海思 arm-hisiv500-linux ./Lib/hisiv500/ 海思 arm-hisiv600-linux ./Lib/hisiv600/ Android arm ./Lib/Android/arm/libeasypusher.a Android arm64 ./Lib/Android/arm64/libeasypusher.a Android x86 ./Lib/Android/x86/libeasypusher.a Android x86_64 ./Lib/Android/x86_64/libeasypusher.a Android mips ./Lib/Android/mips/libeasypusher.a Android mips64 ./Lib/Android/mips64/libeasypusher.a
调用过程
特殊说明
EasyPusher目前支持的音视频格式:
/* 视频编码 */ #define EASY_SDK_VIDEO_CODEC_H264 0x01000001 /* H264 */ #define EASY_SDK_VIDEO_CODEC_MJPEG 0x01000002 /* MJPEG */ #define EASY_SDK_VIDEO_CODEC_MPEG4 0x01000004 /* MPEG4 */ /* 音频编码 */ #define EASY_SDK_AUDIO_CODEC_AAC 0x01000011 /* AAC */ #define EASY_SDK_AUDIO_CODEC_G711A 0x01000012 /* G711 alaw*/ #define EASY_SDK_AUDIO_CODEC_G711U 0x01000014 /* G711 ulaw*/
EasyPusher回调事件定义:
typedef enum __EASY_PUSH_STATE_T { EASY_PUSH_STATE_CONNECTING = 1, /* 连接中 */ EASY_PUSH_STATE_CONNECTED, /* 连接成功 */ EASY_PUSH_STATE_CONNECT_FAILED, /* 连接失败 */ EASY_PUSH_STATE_CONNECT_ABORT, /* 连接异常中断 */ EASY_PUSH_STATE_PUSHING, /* 推流中 */ EASY_PUSH_STATE_DISCONNECTED, /* 断开连接 */ EASY_PUSH_STATE_ERROR }EASY_PUSH_STATE_T;