簡單、高效、穩定、免費的一款標準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到可執行文件同目錄!支持平台芯片位置名稱Windowsx86./Lib/x86/Windowsx64./Lib/x64/Linuxx86./Lib/x86/Linuxx64./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/Androidarm./Lib/Android/arm/libeasypusher.aAndroidarm64./Lib/Android/arm64/libeasypusher.aAndroidx86./Lib/Android/x86/libeasypusher.aAndroidx86_64./Lib/Android/x86_64/libeasypusher.aAndroidmips./Lib/Android/mips/libeasypusher.aAndroidmips64./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 ;