Giter VIP home page Giter VIP logo

tsingsee / easyrtmp Goto Github PK

View Code? Open in Web Editor NEW
696.0 53.0 241.0 56.95 MB

EasyRTMP是一套调用简单、功能完善、运行高效稳定的RTMP功能组件,经过多年实战和线上运行打造,支持RTMP推送断线重连、环形缓冲、智能丢帧、网络事件回调,支持Windows、Linux、arm(hisiv100/hisiv200/hisiv300/hisiv400/hisiv500/hisiv600/etc..)、Android、iOS平台,支持市面上绝大部分的RTMP流媒体服务器,包括Wowza、Red5、ngnix_rtmp、crtmpserver等主流RTMP服务器,能够完美应用于各种行业的直播需求,手机直播、桌面直播、摄像机直播、课堂直播等等方面! Android版本地址:https://github.com/EasyDSS/EasyRTMP-Android iOS地址:https://github.com/EasyDSS/EasyRTMP-iOS

Home Page: http://open.tsingsee.com/

C 96.83% C++ 2.18% Shell 0.23% Makefile 0.76% NASL 0.01%
rtmp-push easyrtmp easydarwin android-rtmp arm-rtmp ios-rtmp rtmp

easyrtmp's Introduction

EasyRTMP

EasyRTMP是TSINGSEE青犀开放平台开发的一套RTMP直播推送功能组件,内部集成了包括:基本RTMP协议、断线重连、异步推送、环形缓冲区、推送网络拥塞自动丢帧、缓冲区关键帧检索、事件回调(断线、音视频数据回调),通过EasyRTMP我们就可以避免接触到稍显复杂的RTMP推送或者客户端流程,只需要调用EasyRTMP的几个API接口,就能轻松、稳定地进行流媒体音视频数据的推送,支持市面上绝大部分的RTMP流媒体服务器,包括Wowza、Red5、nginx-rtmp、crtmpserver等主流RTMP服务器,全平台支持:Windows、Linux、ARM(各种交叉编译工具链)、Android、iOS;

调用方法

  • EasyRTMP_HIK:EasyRTMP通过海康SDK取流,并进行转化,再推送到RTMP流媒体服务器;

  • EasyRTSPLive:拉流IPC摄像机或者NVR硬盘录像机RTSP流转成RTMP推送到阿里云CDN/腾讯云CDN/RTMP流媒体服务器,支持多路RTSP流同时拉取并以RTMP协议推送发布,EasyRTSPLive我们支持任何平台,包括但不限于Windows/Linux/Android/ARM,项目地址:https://github.com/tsingsee/EasyRTSPLive

  • EasyRTMPLive:将RTSP、RTMP、HTTP、HLS等各种各样的网络流媒体先拉取到本地,进行转换,再以标准RTMP/flv协议的方式推流到RTMP流媒体服务器、CDN等,进行直播分发,项目地址:https://github.com/tsingsee/EasyRTMPLive

  • EasyRTMP-Android:Android安卓RTMP直播推流,采集安卓手机前/后摄像头、麦克风音视频推送直播;项目地址:https://github.com/tsingsee/EasyRTMP-Android

  • EasyRTMP-iOS:iOS苹果RTMP直播推流,采集苹果手机前/后摄像头、麦克风音视频推送直播;项目地址:https://github.com/tsingsee/EasyRTMP-iOS

我们在公网部署了一台演示的RTMP高性能流媒体服务器系统:http://demo.easydss.com ,支持RTMP直播、服务端录像、检索、回放等功能;

项目依赖

EasyRTMP项目依赖1个TSINGSEE青犀开放平台的Git工程:

目录结构为:

/
/Include/
/EasyRTMP/

编译方法

Windows平台采用Visual Studio 2010编译sln

Linux下执行Builtit文件编译,具体如下:
chmod +x Builtit

工作流程

EasyPusher Work Flow

调用过程

EasyRTMP

调用示例

技术支持

EasyRTMP是一款非常稳定的RTMP推流直播组件,各平台版本需要经过授权才能商业使用,商业授权方案可以通过以上渠道进行更深入的技术与合作咨询;

更多流媒体音视频资源

EasyDarwin开源流媒体服务器:www.EasyDarwin.org

EasyDSS高性能互联网直播服务:www.EasyDSS.com

EasyNVR安防视频可视化服务:www.EasyNVR.com

EasyNVS视频综合管理平台:www.EasyNVS.com

EasyNTS云组网:www.EasyNTS.com

EasyGBS国标GB/T28181服务器:www.EasyGBS.com

EasyRTS应急指挥平台:www.EasyRTS.com

TSINGSEE青犀开放平台:open.TSINGSEE.com

Copyright © www.TSINGSEE.com Team 2012-2020

青犀TSINGSEE

easyrtmp's People

Contributors

arron1987 avatar babosa avatar caiyingyong avatar jinlong0813 avatar swordtwelve avatar tracy-tang avatar tsingsee-seven avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyrtmp's Issues

拜托上点心吧,连demo都跑不通

./Buildit: line 43: cd: EasyRTMP_File: No such file or directory
make: nbproject/Makefile-x64.mk: No such file or directory
make: *** No rule to make target `nbproject/Makefile-x64.mk'. Stop.

EasyRTMP推流过程概率性崩溃

11-30 09:28:15.613 1828 1828 F art : art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI GetObjectClass called with pending exception 'java.lang.StackOverflowError' thrown in void android.os.MessageQueue.nativePollOnce(long, int):-2
11-30 09:28:15.613 1828 1828 F art : art/runtime/check_jni.cc:65] in call to GetObjectClass
11-30 09:28:15.613 1828 1828 F art : art/runtime/check_jni.cc:65] from void android.os.MessageQueue.nativePollOnce(long, int)
11-30 09:28:15.613 1828 1828 F art : art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
11-30 09:28:15.613 1828 1828 F art : art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x7285d000 self=0xb760c4a0
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] | sysTid=1828 nice=0 cgrp=default sched=0/0 handle=0xb6fb3bec
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] | state=R schedstat=( 127301785518 30307010498 276105 ) utm=11164 stm=1566 core=2 HZ=100
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] | stack=0xbe75f000-0xbe761000 stackSize=8MB
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #00 pc 00004e64 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #1 pc 00003665 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #2 pc 00256ba1 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits >&, int, char const*, art::mirror::ArtMethod*)+84)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #3 pc 00238fdf /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+158)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #4 pc 000b0fdb /system/lib/libart.so (art::JniAbort(char const*, char const*)+610)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #5 pc 000b1715 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+68)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #6 pc 000b49cf /system/lib/libart.so (art::ScopedCheck::ScopedCheck(_JNIEnv*, int, char const*)+1346)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #7 pc 000b6d2d /system/lib/libart.so (art::CheckJNI::GetObjectClass(_JNIEnv*, _jobject*)+28)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #8 pc 00006db1 /data/app/org.easydarwin.easyrtmp-2/lib/arm/libeasyrtmp.so (jni_callback(_jobject*, int)+40)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #9 pc 00006dff /data/app/org.easydarwin.easyrtmp-2/lib/arm/libeasyrtmp.so (__EasyRTMP_Callback(int, char*, __EASY_RTMP_STATE_T, void*)+10)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #10 pc 00008bf8 /data/app/org.easydarwin.easyrtmp-2/lib/arm/libeasyrtmp.so (__PushProcThread(void*)+592)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #11 pc 0001659b /system/lib/libc.so (__pthread_start(void*)+30)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] native: #12 pc 000144c3 /system/lib/libc.so (__start_thread+6)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at android.os.MessageQueue.nativePollOnce(Native method)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at android.os.MessageQueue.next(MessageQueue.java:143)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:122)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at android.app.ActivityThread.main(ActivityThread.java:5280)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at java.lang.reflect.Method.invoke!(Native method)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at java.lang.reflect.Method.invoke(Method.java:372)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:963)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758)
11-30 09:28:15.614 1828 1828 F art : art/runtime/check_jni.cc:65]
从log来看,是本底层报了的错误。麻烦尽快修复。^-^

关于libeasyrtmp.a与libeasypusher.a库冲突

博主,我想将视频文件同时发布为rtsp和rtmp推送各自服务器上,发现调用的这两个库会冲突,提示在函数‘_TRACE_OpenLogFile’中‘fLog’有重复定义,请问一下这个问题你们有测试过吗?能不能解决一下?

问题

后台录制,推流就停止了,是什么原因那

Mac系统 执行./Buildit rtsp x64 报错

"/Applications/Xcode.app/Contents/Developer/usr/bin/make" -f nbproject/Makefile-x64.mk x64/easyrtmp_rtsp
mkdir -p x64
g++ -o x64/easyrtmp_rtsp build/x64/GNU-Linux/getopt.o build/x64/GNU-Linux/main.o -L../Lib/x64 -LlibEasyRTSPClient/Lib/x64 -L../Lib/EasyAACEncloder/x64 -leasyrtmp -leasyrtspclient -leasyaacencoder -pthread -lrt
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
ld: warning: directory not found for option '-L../Lib/EasyAACEncloder/x64'
ld: library not found for -leasyaacencoder
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [x64/easyrtmp_rtsp] Error 1
make: *** [.build-conf] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.