本文转自:http://www.cnblogs.com/kangkey/p/6772863.html 最近在公司项目中,遇到需要将内网的监控视频信息,在外网进行查看,最终通过查阅资料,发现EasyDarwin能够实现该需求,由于该开源组件是用C++进行开发,在C#调用方面资料较少,也有可能是我没有找到的原因,进过不少坑,所以对EasyDarwin的使用过程做个记录,希望能够帮助到使用该开源组件的童鞋们,文中有不对的地方,望大家指出,谢谢. 一.部署EasyDarwin流媒体服务器 1.  下载E…
博客一:转自:http://blog.csdn.net/u011039529/article/details/70832857 大家好,本人刚毕业程序猿一枚.受人所托,第一次写博客,如有错误之处敬请谅解.本文主要讲解:如何在C#中封装以及调用C++编写的函数,通过对EasyDarwin开源流媒体的EasyPusher为例讲解. 首先,我个人不喜欢复杂的调用,比如很多C#中Marshal类相关的操作.我更愿意把c++代码封装成对象,以对象void*到IntPtr的相互转换来实现. 当然,这种方法对…
C#调用IOS推送 使用的是 PushSharp 开源库 源码代码如下 点我…
1.java调用apns推送 2.php 调用apns 推送,可借助终端…
在不断进行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各…
问题描述 我们在开发直播过程中,会需要用到直播推送端,推送端将直播的音视频数据推送到流媒体服务器或者cdn,再由流媒体服务器/CDN进行视频的转发和分发,提供给客户端进行观看.由于直播推送端会存在于各种不同的网络环境下面:有线.无线.3G.4G.卫星信号等等,在这些网络条件下,如何做到能够做到灵活.低延时直播,我们这个时候就需要引入发送缓冲区和丢帧策略两种功能,保证推送的实时和数据的有效: 环形缓冲区(引用) 环形缓冲区(ring buffer),是一种数据结构用于表示一个固定尺寸.头尾相连的缓…
先简单介绍一下EasyPusher的功能,后面再对具体内部架构做介绍: EasyPusher:https://github.com/EasyDarwin/EasyPusher EasyPusher是什么? EasyPusher是一个推送流媒体音视频给开源流媒体服务器EasyDarwin的推送库,通过EasyPusher我们就可以避免接触到稍显复杂的RTSP/RTP推送流程,只需要调用EasyPusher的几个API接口,就能轻松.稳定地把流媒体音视频数据推送给EasyDarwin服务器进行转发和…
本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52963378 EasyRTMP Android版demo中,通过使用AudioRecord录音,然后将每一帧数据通过MediaCodec编码成LATM格式音频,然后就发送给服务器就OK了. AudioRecord的使用 public void startRecord() { try { init(); mAudioRecord.startRecord…