C#调用EasyPusher推送到EasyDarwin实现视频流中转
本文转自:http://www.cnblogs.com/kangkey/p/6772863.html
最近在公司项目中,遇到需要将内网的监控视频信息,在外网进行查看,最终通过查阅资料,发现EasyDarwin能够实现该需求,由于该开源组件是用C++进行开发,在C#调用方面资料较少,也有可能是我没有找到的原因,进过不少坑,所以对EasyDarwin的使用过程做个记录,希望能够帮助到使用该开源组件的童鞋们,文中有不对的地方,望大家指出,谢谢。
一、部署EasyDarwin流媒体服务器
1、 下载EasyDarwin流媒体服务器部署文件,下载下来包含了Windows和Linux版本,如图:
2、 部署EasyDarwin流媒体服务,将“EasyDarwin-Windows-x86_64-v7.3.17.0325.rar”进行解压,得到如下文件:
这里可以看到几个bat批处理文件,双击“install service.bat”文件安装并运行“EasyDarwin”服务,切换到本地服务查看是不是我们的 EasyDarwin 服务已安装好且是已运行的状态了,如图:
那怎样确定EasyDarwin服务已经处于工作状态呢,我们可输入如下接口地址http://127.0.0.1:10008/api/v1/getserverinfo进行查看,返回如下信息:
其中” uninstall service.bat”文件用于EasyDarwin服务的卸载,到这里为止,我们的EasyDarwin流媒体服务已经准备完成了。(备注:easydarwin.xml文件为流媒体服务的配置信息,这里我们按照默认方式,不用进行更改。)
二、运用EasyPusher 将视频或者音频信息推送至我们的EasyDarwin流媒体服务器
1、 关于C# EasyPusher的调用代码Demo以及要用到的dll组件,该demo由EasyDarwin技术群的朋友提供,我已上传至百度云盘请进行下载,下载后根据自己的实际情况进行代码的更改,如下为基本的Demo:
/// <summary>
/// 说明:主要是封装easyrtsppusher
/// c++的封装见:c++项目libPushCplus
/// c#的调用见:PusherSDK.cs
/// </summary>
class Program
{
static string rtsp = "rtsp://admin:admin12345@192.168.41.108:554/h264/ch33/main/av_stream";//rtsp地址
static string mediaServerIP = "121.40.26.450";//流媒体IP
static int mediaServerPort = 554;//流媒体端口
static string tailName = "test.sdp";//必须sdp结尾
static void Main(string[] args)
{
IntPtr tempPusher = IntPtr.Zero; /返回推流对象的地址:由C++内存对象托管到C#
tempPusher = PusherSDK.CreateStartPush(mediaServerIP, mediaServerPort, tailName, rtsp);
if (tempPusher != IntPtr.Zero)
{
Trace.WriteLine("推流成功");//终端会打印结果的
}
Trace.WriteLine("按任意键三次退出.");
Console.ReadLine();
Console.ReadLine();
Console.ReadLine();
PusherSDK.ClosePush(tempPusher);
}
}
说明:
(1)、变量rtsp为需要推送至流媒体服务器的视频源地址。
(2)、变量mediaServerIP为流媒体IP,也就是我们部署EasyDarwin服务的服务器地址,根据自己的实际情况进行设置。
(3)、变量mediaServerPort为流媒体端口号,如果你在安装流媒体服务的时候没有进行更改,默认端口为554,反子,改成相应的端口号就行。
2、 将EasyPusher应用程序部署至服务器,我这里将bin\Debug下的文件部署到你能够访问到需要推送资源服务器上,如图:
在服务器端运行ConsolePusher.exe文件,得到如图结果
到这里,不出意外,一切步骤成功的话,我们的视频文件流就被推送至我们部署的EasyDarwin流媒体服务器了。
备注:这里我运行EasyPusher推送程序时,遇到以下问题:
(1)、无法加载 DLL “libEasyPusher.dll”,主要是我们运行EasyPuserer程序的服务器没有相关的VC程序集组件,如下图:
解决方法:将以下组件添加至运行程序的同一目录下,其实,大家在我共享的百度云盘下载下来的demo中,已经包含了这些组件信息,如图:
(2)、可能遇到EasyPusher拉取视频流成功了,但是推送至EasyDarwin流媒体服务器失败,这可能是我们部署EasyDarwin流媒体服务所在的服务器防火墙的原因造成的,我们可以尝试关掉防火墙试试,这里我就遇到了这个问题。
三、 下载VLC media player 播放器,查看我们推送至EasyDarwin服务器的视频信息,如图:
最后感谢 EasyDarwin技术群的小伙伴以及群主的帮忙,如果大家还有什么问题可以加EasyDarwin技术群465901074、496258327,里面的童鞋们还是很热心的。
获取更多信息
EasyPusher直播推送技术交流群:465901074(相关代码见群共享文件)
Copyright © EasyDarwin.org 2012-2017
C#调用EasyPusher推送到EasyDarwin实现视频流中转的更多相关文章
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
博客一:转自:http://blog.csdn.net/u011039529/article/details/70832857 大家好,本人刚毕业程序猿一枚.受人所托,第一次写博客,如有错误之处敬请谅 ...
- C#调用IOS推送
C#调用IOS推送 使用的是 PushSharp 开源库 源码代码如下 点我
- iOS 后台调用apns推送
1.java调用apns推送 2.php 调用apns 推送,可借助终端
- EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体服务器,EasyPlayer手机播放器
在不断进行EasyDarwin开源流媒体服务器的功能和性能完善的同时,我们也配套实现了目前在安防和移动互联网行业比较火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 和 Ea ...
- 基于EasyDarwin EasyPusher实现Android手机直播推送功能
EasyPusher直播推送在之前就已经稳定支持了Windows.Linux.ARM上的RTSP直播推送功能,配合EasyDarwin开源流媒体服务器,延时基本在1s以内,这个技术方案经过一年多时间, ...
- EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体server,EasyPlayer手机播放器
在不断进行EasyDarwin开源流媒体server的功能和性能完好的同一时候,我们也配套实现了眼下在安防和移动互联网行业比較火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 ...
- EasyPusher直播推送中用到的缓冲区设计和丢帧原理
问题描述 我们在开发直播过程中,会需要用到直播推送端,推送端将直播的音视频数据推送到流媒体服务器或者cdn,再由流媒体服务器/CDN进行视频的转发和分发,提供给客户端进行观看.由于直播推送端会存在于各 ...
- EasyPusher:基于live555的DarwinInjector实现的RTSP直播推送程序
先简单介绍一下EasyPusher的功能,后面再对具体内部架构做介绍: EasyPusher:https://github.com/EasyDarwin/EasyPusher EasyPusher是什 ...
- EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送
本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52963378 EasyRTMP Android版de ...
随机推荐
- wechat多开
右键wechat查看属性,找到目标(wechat的执行路径),复制 然后在桌面新建文档,输入下面命令,想多开几个就复制几行 start 复制的目标 另存为bat文件,所有文件类型 双击运行
- Visual Studio2012打不开MVC2.0以及1.0项目如何处理
/*打开扩展名为csproj的工程文件*/ <ProjectTypeGuids> {F85E285D-A4E0---AB1D724D3325};{349c5851-65df-11da--0 ...
- Java基础知识陷阱(一)
本文发表于本人博客. 事隔好多年了,重新拿起来Java这门语言,看似熟悉其实还很陌生,想想应该梳理下顺便提高下自己.这次先来看看Java里面的String这个对象. 经典的先看下面一段代码,请问最终创 ...
- [笔记]Go语言写文件几种方式性能对比
Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件.如此重复多次 打开文件,写入内容,defer 关闭文件.如此重复多次 打开文件,重复多次写入内容,defer ...
- mysql中int(M) tinyint(M)中M的作用
原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...
- C++中char类型的十六进制字符串转换成字节流
如a[5]="1234"转换成a[5]={0x12,0x34} 代码如下: void HexStrToByte(const char* source, unsigned char* ...
- 【Java】仿真qq尝试:聊天界面 && 响应用户输入
需求分析: 逐步完善一个“qq仿真”程序. 参考: 1.文本框与文本区:http://www.weixueyuan.net/view/6062.html 2.java布局:http://www.cnb ...
- 《Language Implementation Patterns》之 语言翻译器
语言翻译器可以从一种计算机语言翻译成另外一种语言,比如一种DSL的标量乘法axb翻译成java就变成a*b:如果DSL里面有矩阵运算,就需要翻译成for循环.翻译器需要完全理解输入语言的所有结构,并选 ...
- 20165101 实验二 Java面向对象程序设计
20165101 实验二 Java面向对象程序设计
- NaviCat Primium远程连接Oracle 11g数据库操作方法
说明:作者使用的系统是windows 10 64位系统,使用的软件及插件都是基于64位系统进行安装.一. 软件准备 1.windows 10 64位 操作系统 2.NaviCat Primium 11 ...