问题描述 我们在开发直播过程中,会需要用到直播推送端,推送端将直播的音视频数据推送到流媒体服务器或者cdn,再由流媒体服务器/CDN进行视频的转发和分发,提供给客户端进行观看.由于直播推送端会存在于各种不同的网络环境下面:有线.无线.3G.4G.卫星信号等等,在这些网络条件下,如何做到能够做到灵活.低延时直播,我们这个时候就需要引入发送缓冲区和丢帧策略两种功能,保证推送的实时和数据的有效: 环形缓冲区(引用) 环形缓冲区(ring buffer),是一种数据结构用于表示一个固定尺寸.头尾相连的缓…
在不断进行EasyDarwin开源流媒体服务器的功能和性能完善的同时,我们也配套实现了目前在安防和移动互联网行业比较火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 和 EasyPlayer播放器项目: 先大概对EasyPusher和EasyPlayer项目做一下介绍,EasyPusher是一个推送流媒体音/视频流给开源流媒体服务器EasyDarwin的标准RTSP/RTP协议推送库,全平台支持(包括Windows/Linux(32 & 64),ARM各平台,Andro…
EasyPusher直播推送在之前就已经稳定支持了Windows.Linux.ARM上的RTSP直播推送功能,配合EasyDarwin开源流媒体服务器,延时基本在1s以内,这个技术方案经过一年多时间,包括开源社区.企业用户的反复检验测试,已经具备很高的稳定性了: 我们在之前已经spydroid实现过一套Android直播推送与EasyDarwin结合的直播方案,后来一直都没有进行迭代优化,正好趁这个机会,EasyPusher已经支持了ARM平台,我们就通过NDK编译的方式,将EasyPusher…
在不断进行EasyDarwin开源流媒体server的功能和性能完好的同一时候,我们也配套实现了眼下在安防和移动互联网行业比較火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 和 EasyPlayer播放器项目. 先大概对EasyPusher和EasyPlayer项目做一下介绍,EasyPusher是一个推送流媒体音/视频流给开源流媒体serverEasyDarwin的标准RTSP/RTP协议推送库.全平台支持(包括Windows/Linux(32 & 64),ARM各…
本文转自EasyDarwin团队kim的博客:http://blog.csdn.net/jinlong0603 EasyRTMP的推送缓冲区设计 EasyRTMP内部也同样采用的环形缓冲的设计方法,将音视频数据都同时存入缓冲区,再由发送者从缓冲区中获取数据进行发送,这样就形成了一个异步.生产者.消费者的过程,上层调用者只需要将采集.编码后的音视频Frame数据Push到SDK的缓冲区中,即可返回继续进行上层逻辑操作,SDK内部的发送线程则从缓冲区中不断获取音视频数据推送到流媒体服务器: Easy…
EasyPusher移动端推送同我们平时用的RTSP直播推送流程一样,都是采用标准RTSP/RTP推送流程:ANNOUNCE->SETUP->PLAY->RTP/RTCP->TEARDOWN(或者直接直接断开推送连接),流程图如下: 我们贴一段EasyPusher 安卓与EasyDarwin流媒体服务器之间的交互报文: #C->S: #time: ms=475350259 date=Sat, 16 Apr 2016 01:09:58 GMT #server: ip=192.1…
本文转自Holo的博客:http://blog.csdn.net/u013758734/article/details/50834770 最近在研究EasyDarwin的Push库EasyPusher,EasyPusher可以推送H264视频到EasyDarwin服务器,终端可以通过rtsp协议访问该实时流,达到手机直播的功能,延迟基本在2秒以内. EasyDarwinQQ群:496258327 本文主要记录一下最近研究的关于Android手机如何获取实时画面,并将数据编码为H264的格式的视频…
最近EasyPusher针对UVC摄像头做了适配.我们结合了UVCCamera与EasyPusher,支持将UVC摄像头的视频推送到RTSP服务器上.在此特别感谢UVCCamera这个牛逼的项目! 来看看是怎么操作UVC摄像头的吧.我们实现了一个专门检测UVC摄像头的服务:UVCCameraService类,主要代码如下: 监听 mUSBMonitor = new USBMonitor(this, new USBMonitor.OnDeviceConnectListener() { @Overr…
本文由EasyDarwin开源团队成员John提供:http://blog.csdn.net/jyt0551/article/details/52276062 EasyPusher Android是使用摄像头采集视频数据,并通过MediaCodec进行H264编码,之后打包成RTSP格式并上传的. 大家知道Android 的Camera是通过回调来获取YUV数据的,要想获取到回调数据,需要给Camera一个有效的Surface对象.通常我们用SurfaceView或者TextureView来提供…
先简单介绍一下EasyPusher的功能,后面再对具体内部架构做介绍: EasyPusher:https://github.com/EasyDarwin/EasyPusher EasyPusher是什么? EasyPusher是一个推送流媒体音视频给开源流媒体服务器EasyDarwin的推送库,通过EasyPusher我们就可以避免接触到稍显复杂的RTSP/RTP推送流程,只需要调用EasyPusher的几个API接口,就能轻松.稳定地把流媒体音视频数据推送给EasyDarwin服务器进行转发和…