Coder Social home page Coder Social logo

easydarwin / easypusher Goto Github PK

View Code? Open in Web Editor NEW
786.0 83.0 391.0 102.03 MB

免费组件:简单、高效、稳定、免费的一款标准RTSP/RTP协议直播推送库,支持将H.264/H.265/G.711/G.726/AAC等音视频数据推送到RTSP流媒体服务器(例如EasyDarwin)进行低延时直播或者视频通信,支持Windows、Linux、ARM、Android、iOS等平台,EasyPusher配套EasyDarwin流媒体服务器、EasyPlayer RTSP播放器适用于特殊行业的低延时应急指挥需求! Android迁移到了https://github.com/EasyDarwin/EasyPusher-Android , iOS迁移到了https://github.com/EasyDarwin/EasyPusher-iOS

Home Page: http://www.easydarwin.org/

C 41.97% C++ 57.73% Shell 0.08% Makefile 0.16% Objective-C 0.05% Batchfile 0.01%
easypusher-easydarwin easydarwin rtsp-annouce easypusher rtsp-push live555-announce

easypusher's Introduction

EasyPusher v2.0

EasyPusher RTSP推流是EasyDarwin开源流媒体团队开发的一款推送流媒体音/视频流给标准RTSP流媒体服务器(如EasyDarwin、Wowza)的流媒体推送库,全平台支持(包括Windows、Linux、ARM、Android、iOS),通过EasyPusher我们就可以避免接触到稍显复杂的RTSP/RTP/RTCP推送流程,只需要调用EasyPusher的几个API接口,就能轻松、稳定地把流媒体音视频数据推送给RTSP流媒体服务器进行处理和转发,EasyPusher经过长时间的企业用户体验,稳定性非常高;更重要的是EasyPusher是完全免费使用的!

工作流程

EasyPusher Work Flow

功能版本

  • EasyPusher-Android:实时采集安卓摄像头音视频(Android 5.0+支持采集手机桌面屏幕进行直播),进行H.264/AAC编码后,调用EasyPusher进行直播推送,项目地址:https://github.com/EasyDarwin/EasyPusher-Android

  • EasyPusher-iOS:实时采集iOS摄像头音视频进行H.264/AAC编码,调用EasyPusher推送到RTSP流媒体服务器,项目地址:https://github.com/EasyDarwin/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.a
    Androidarm64./Lib/Android/arm64/libeasypusher.a
    Androidx86./Lib/Android/x86/libeasypusher.a
    Androidx86_64./Lib/Android/x86_64/libeasypusher.a
    Androidmips./Lib/Android/mips/libeasypusher.a
    Androidmips64./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;

版本下载

EasyPusher_Android

EasyPusher_iOS

技术支持

  • EasyPusher完全免费使用的,技术交流直接到QQ群:465901074,交流意见!

获取更多信息

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

Copyright © EasyDarwin Team 2012-2019

EasyDarwin

easypusher's People

Contributors

arnowang avatar babosa avatar bryant1410 avatar jinlong0813 avatar kidloserme avatar qict2004 avatar swordtwelve avatar wellsen 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  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

easypusher's Issues

EasyPusher_RTSP 拉流UDP视频数据不能播放

远端RTSP服务器 使用UDP传输发送H264视频, VLC 设置 --no-rtsp-tcp 播放正常, EasyPusher_RTSP 拉流Log显示正常,但是EasyDarwin sdp 无法播放视频流。

Pusher log:

Sending request: OPTIONS rtsp://172.16.3.14:8008 RTSP/1.0
CSeq: 2
User-Agent: EasyRTSPClient v1.0.16.0909 (LIVE555 Streaming Media v2016.05.20)

Received 121 new bytes of response data.
Received a complete OPTIONS response:
RTSP/1.0 200 OK
Server: AirCraft RTSP Server
Cseq: 2
Content-Length: 0
Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE

Sending request: DESCRIBE rtsp://172.16.3.14:8008 RTSP/1.0
CSeq: 3
User-Agent: EasyRTSPClient v1.0.16.0909 (LIVE555 Streaming Media v2016.05.20)
Accept: application/sdp

Received 363 new bytes of response data.
Received a complete DESCRIBE response:
RTSP/1.0 200 OK
Server: AirCraft RTSP Server
Cseq: 3
Content-Length: 220
Content-Base: 172.16.3.14:8008/
Content-Type: application/sdp

v=0
o=- 0 0 IN IP4 172.16.3.14
s=Unnamed
i=N/A
c=IN IP4 10.168.17.56
t=0 0
a=recvonly
m=video 5006 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42C029;
a=control:trackID=1

20170228 165833 Channel[0] Got a SDP description: v=0
o=- 0 0 IN IP4 172.16.3.14
s=Unnamed
i=N/A
c=IN IP4 10.168.17.56
t=0 0
a=recvonly
m=video 5006 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42C029;
a=control:trackID=1

Press Enter exit...
Sending request: SETUP 172.16.3.14:8008/trackID=1 RTSP/1.0
CSeq: 4
User-Agent: EasyRTSPClient v1.0.16.0909 (LIVE555 Streaming Media v2016.05.20)
Transport: RTP/AVP;unicast;client_port=5006-5007

Received 255 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 200 OK
Server: AirCraft RTSP Server
Cseq: 4
Content-Length: 0
Transport: RTP/AVP/UDP;unicast;destination=10.168.17.56;client_port=5006-5007;server_port=51811-53418;ssrc=3fa4dfef;mode=play
Session: 1185d20035702ca
Cache-Control: no-cache

20170228 165833 channel[0] Created a data sink for the video/H264 subsession
Sending request: PLAY 172.16.3.14:8008/ RTSP/1.0
CSeq: 5
User-Agent: EasyRTSPClient v1.0.16.0909 (LIVE555 Streaming Media v2016.05.20)
Session: 1185d20035702ca
Scale: 0.000000
Range: npt=0.000-

Received 158 new bytes of response data.
Received a complete PLAY response:
RTSP/1.0 200 OK
Server: AirCraft RTSP Server
Cseq: 5
Content-Length: 0
RTP-Info: url=rtsp://172.16.3.14:8008/trackID=1;seq=0
Session: 1185d20035702ca

20170228 165833 channel[0] Started playing session
EasyStreamPusher_StartStream serverAddr[127.0.0.1] port[6554] videoCodec[28] audioCodec[0] samplerate[0] serverURL[rtsp://127.0.0.1:6554/easypusher_rtsp.sdp]
init sock: 0
Connecting...
IP address: 127.0.0.1
Connecting [127.0.0.1:6554]
Connected
Connect success
SEND[526]
ANNOUNCE rtsp://127.0.0.1:6554/easypusher_rtsp.sdp RTSP/1.0
CSeq: 1
User-Agent: EasyPusher v1.2.16.1105
Content-Type: application/sdp
Content-Length: 365

v=0
o=- 2205756022 2205756022 IN IP4 127.0.0.1
s=EasyDarwin
i=EasyDarwin
c=IN IP4 127.0.0.1
t=0 0
a=x-qt-text-nam:EasyDarwin
a=x-qt-text-inf:EasyDarwin
a=x-qt-text-cmt:source application::EasyDarwin
a=x-qt-text-aut:
a=x-qt-text-cpy:
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;sprop-parameter-sets=
a=control:trackID=1

RECV[127]
RTSP/1.0 200 OK
Server: EasyDarwin/7.0.5 (Build/16.0518; Platform/Win32; Release/EasyDarwin; State/Development; )
Cseq: 1

SEND[176]
SETUP rtsp://127.0.0.1:6554/easypusher_rtsp.sdp/trackID=1 RTSP/1.0
CSeq: 2
User-Agent: EasyPusher v1.2.16.1105
Transport: RTP/AVP/TCP;unicast;mode=record;interleaved=0-1

RECV[315]
RTSP/1.0 200 OK
Server: EasyDarwin/7.0.5 (Build/16.0518; Platform/Win32; Release/EasyDarwin; State/Development; )
Cseq: 2
Cache-Control: no-cache
Session: 126409477471398
Date: Tue, 28 Feb 2017 08:58:40 GMT
Expires: Tue, 28 Feb 2017 08:58:40 GMT
Transport: RTP/AVP/TCP;unicast;mode=record;interleaved=0-1

SEND[150]
PLAY rtsp://127.0.0.1:6554/easypusher_rtsp.sdp RTSP/1.0
CSeq: 4
User-Agent: EasyPusher v1.2.16.1105
Session: 126409477471398
Range: npt=0.000-

RECV[220]
RTSP/1.0 200 OK
Server: EasyDarwin/7.0.5 (Build/16.0518; Platform/Win32; Release/EasyDarwin; State/Development; )
Cseq: 4
Session: 126409477471398
RTP-Info: url=rtsp://127.0.0.1:6554/easypusher_rtsp.sdp/trackID=1

RTSP interaction is complete. Prepare to send RTP...
*** live streaming url:rtsp://127.0.0.1:6554/easypusher_rtsp.sdp ***
Pushing to rtsp://127.0.0.1:6554/easypusher_rtsp.sdp ...Send data. Ret: 0
Pushing to rtsp://127.0.0.1:6554/easypusher_rtsp.sdp ...`

缺少使用说明

这么多开源项目,其实可以增加文档使用说明,这样开发者很快得搭建一个可以使用得项目。不然太零碎。

部分设备关键帧间隔有问题

在LG G3(Android6.0+) 三星S6Edge+(Android6.0+)在编码时,关键帧产生的间隔过大,设置I_Frame_INTERFVAL为1,实际关键帧间隔大概30秒左右,导致播放端会画面中断、马赛克、打开画面过慢等问题。是否跟高版本使用MediaCodec有关系呢,还是摄像头获取数据应该通过Camera2接口类呢

[FAQ] Bidirectional audio support

Hi,

Does EasyPusher SDK supports Bidirectional audio streaming ?

                        audio                audio                       audio
Camera with speaker   <======> EasyPusher  <========> EasyDarwin/Wowza <===========> Mobile

Thanks.

easypusher_win build error in vs2015

use VisualStudioConverter.exe convert vs 2010 project to vs 2015 project.
open /win/EasyPusher.sln and build it success,
but open /EasyPusher_Win/EasyPusher.sln build it error. this is error image

206de552-a3a8-4851-b49e-ff62042bdddc

能否采集计算机的音频输出?

就像obs的音频输出采集功能,可以采集计算机输出的音频并进行推流?因为obs好像不支持推流到easydarwin(可能是我弄的不对),所以用easypusher但是貌似不能采集输出音频?

easypusher_file 不支持指定文件名推送

不支持指定文件名推送,-h信息重复。

px@ts198:~/EasyDarwin-CentOS-x64-7.0.4-Build16.0108/Movies$ ./easypusher_file -h

Usage:

./easypusher_file [-d -p -n ]
Help Mode: ./easypusher_file -h

For example: ./easypusher_file -d 115.29.139.20 -p 554 -n easypusher_file.sdp

Usage:

./easypusher_file [-d -p -n ]
Help Mode: ./easypusher_file -h
For example: ./easypusher_file -d 115.29.139.20 -p 554 -n easypusher_file.sdp

libEasyPusher 源码

请问 libEasyPusher 能开源吗?如果已经开源了,请告知获取的途径,谢谢。

或许因为各种原因无法开源,可以申请新的平台的 .a 文件编译吗,希望能添加 mips。

只能在main函数中EasyPusher_Create()成功

c++项目,只能在main函数中EasyPusher_Create()成功,在其他线程中,使用类中的成员函数去调用EasyPusher_Create()会失败。
请各位老大解决,

辛苦!

java.lang.UnsatisfiedLinkError: No implementation found for void com.champion.mypush.push.EasyPusher.setOnInitPusherCallback(com.champion.mypush.push.EasyPusher$OnInitPusherCallback)

android端运行出现此问题,自己新建一个项目,import那个api的module,然后按照demo中的样子写了过来,和demo基本一模一样,jniLibs也放入那些so文件了,build.gradle与源文件一样,然后运行后出现上述错误。
上述错误一般是找不到so文件中的方法才会出现。不知道如何解决。

EasyPusher支持sps/pps参数传入

目前的EasyPusher在ANNOUNCE的sdp中并未携带sps,pps,这个应当做为一个可选的参数传入,如果传入为NULL,则sdp不携带sps/pps,如果有传入,则需要在sdp中加入sps,pps;

VS2017 编译错误

在使用 VS2017 打开 EasyPusher_Win\EasyPusher.sln 工程,经过SDK的升级,编译报错。
image

可以帮忙修复下么,感觉是没有找到 RTSP_FRAME_INFO 这样的定义。

直接在 win10 上运行github上编译好的程序,选择好本地文件,输出下面错误信息:
2020/12/07 20:20:20 MP4文件采集成功!
2020/12/07 20:20:20 推送EasyDarwin服务器URL:rtsp://localhost:554/stream0.sdp 失败!
2020/12/07 20:20:21 停止推送!
2020/12/07 20:20:22 本地预览停止

使用/Lib/hisiv300/libeasypusher.a的库,移植在hi3518ev200开发板上,使用TCP将视频流推送至EasyDarwin服务器,播放器能正常观看;但换为UDP后,log提示推送成功,但是播放器无法播放,不知是哪的问题?

遇到同样的问题,如何解决呢?我使用rtsp_pusher的SDK,使用TCP将视频流推送至EasyDarwin服务器,播放器能正常观看;但换为UDP后,显示的log和你的相同(推送成功),但是播放器无法播放,不知是哪的问题?

代码关键部分截图
image

log截图
image

Originally posted by @im11926 in #12 (comment)

EasyPusher_FILE这个demo有异常

利用EasyPusher_FILE这个模块向服务端easydarwin推送MP4文件,播放只有声音,没有画面。通过调试,发现服务端无法获取视频信息。而EasyPusher-1.2.16.1105这个版本推送视频正常,但是音频又不对。想请问一下,是不是这个库文件某个地方有bug

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.