C#调用EasyPusher推送到EasyDarwin实现视频流中转
2017-04-27 10:33
246 查看
本文转自:http://www.cnblogs.com/kangkey/p/6772863.html
最近在公司项目中,遇到需要将内网的监控视频信息,在外网进行查看,最终通过查阅资料,发现EasyDarwin 能够实现该需求,由于该开源组件是用C++进行开发,在C#调用方面资料较少,也有可能是我没有找到的原因,进过不少坑,所以对EasyDarwin的使用过程做个记录,希望能够帮助到使用该开源组件的童鞋们,文中有不对的地方,望大家指出,谢谢。一、部署EasyDarwin流媒体服务器1、 下载EasyDarwin流媒体服务器部署文件,下载下来包含了Windows和Linux版本,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101037537-1289590729.png)
2、 部署EasyDarwin流媒体服务,将“EasyDarwin-Windows-x86_64-v7.3.17.0325.rar”进行解压,得到如下文件:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101057865-1911872814.png)
这里可以看到几个bat批处理文件,双击“install service.bat”文件安装并运行“EasyDarwin”服务,切换到本地服务查看是不是我们的 EasyDarwin 服务已安装好且是已运行的状态了,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101131912-809228815.png)
那怎样确定EasyDarwin服务已经处于工作状态呢,我们可输入如下接口地址http://127.0.0.1:10008/api/v1/getserverinfo进行查看,返回如下信息:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101147959-1512789894.png)
其中” 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下的文件部署到你能够访问到需要推送资源服务器上,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101626865-116890763.png)
在服务器端运行ConsolePusher.exe文件,得到如图结果
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101640600-1561423058.png)
到这里,不出意外,一切步骤成功的话,我们的视频文件流就被推送至我们部署的EasyDarwin流媒体服务器了。备注:这里我运行EasyPusher推送程序时,遇到以下问题:(1)、无法加载 DLL “libEasyPusher.dll”,主要是我们运行EasyPuserer程序的服务器没有相关的VC程序集组件,如下图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101732115-1313459127.png)
解决方法:将以下组件添加至运行程序的同一目录下,其实,大家在我共享的百度云盘下载下来的demo中,已经包含了这些组件信息,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101751787-557841460.png)
(2)、可能遇到EasyPusher拉取视频流成功了,但是推送至EasyDarwin流媒体服务器失败,这可能是我们部署EasyDarwin流媒体服务所在的服务器防火墙的原因造成的,我们可以尝试关掉防火墙试试,这里我就遇到了这个问题。三、 下载VLC media player 播放器,查看我们推送至EasyDarwin服务器的视频信息,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101836569-1137918315.png)
最后感谢 EasyDarwin技术群的小伙伴以及群主的帮忙,如果大家还有什么问题可以加EasyDarwin技术群465901074、496258327,里面的童鞋们还是很热心的。
邮件:support@easydarwin.orgWEB:www.EasyDarwin.orgCopyright © EasyDarwin.org 2012-2017
最近在公司项目中,遇到需要将内网的监控视频信息,在外网进行查看,最终通过查阅资料,发现EasyDarwin 能够实现该需求,由于该开源组件是用C++进行开发,在C#调用方面资料较少,也有可能是我没有找到的原因,进过不少坑,所以对EasyDarwin的使用过程做个记录,希望能够帮助到使用该开源组件的童鞋们,文中有不对的地方,望大家指出,谢谢。一、部署EasyDarwin流媒体服务器1、 下载EasyDarwin流媒体服务器部署文件,下载下来包含了Windows和Linux版本,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101037537-1289590729.png)
2、 部署EasyDarwin流媒体服务,将“EasyDarwin-Windows-x86_64-v7.3.17.0325.rar”进行解压,得到如下文件:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101057865-1911872814.png)
这里可以看到几个bat批处理文件,双击“install service.bat”文件安装并运行“EasyDarwin”服务,切换到本地服务查看是不是我们的 EasyDarwin 服务已安装好且是已运行的状态了,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101131912-809228815.png)
那怎样确定EasyDarwin服务已经处于工作状态呢,我们可输入如下接口地址http://127.0.0.1:10008/api/v1/getserverinfo进行查看,返回如下信息:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101147959-1512789894.png)
其中” 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下的文件部署到你能够访问到需要推送资源服务器上,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101626865-116890763.png)
在服务器端运行ConsolePusher.exe文件,得到如图结果
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101640600-1561423058.png)
到这里,不出意外,一切步骤成功的话,我们的视频文件流就被推送至我们部署的EasyDarwin流媒体服务器了。备注:这里我运行EasyPusher推送程序时,遇到以下问题:(1)、无法加载 DLL “libEasyPusher.dll”,主要是我们运行EasyPuserer程序的服务器没有相关的VC程序集组件,如下图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101732115-1313459127.png)
解决方法:将以下组件添加至运行程序的同一目录下,其实,大家在我共享的百度云盘下载下来的demo中,已经包含了这些组件信息,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101751787-557841460.png)
(2)、可能遇到EasyPusher拉取视频流成功了,但是推送至EasyDarwin流媒体服务器失败,这可能是我们部署EasyDarwin流媒体服务所在的服务器防火墙的原因造成的,我们可以尝试关掉防火墙试试,这里我就遇到了这个问题。三、 下载VLC media player 播放器,查看我们推送至EasyDarwin服务器的视频信息,如图:
![](http://images2015.cnblogs.com/blog/281212/201704/281212-20170427101836569-1137918315.png)
最后感谢 EasyDarwin技术群的小伙伴以及群主的帮忙,如果大家还有什么问题可以加EasyDarwin技术群465901074、496258327,里面的童鞋们还是很热心的。
获取更多信息
EasyPusher直播推送技术交流群:465901074(相关代码见群共享文件)邮件:support@easydarwin.orgWEB:www.EasyDarwin.orgCopyright © EasyDarwin.org 2012-2017
![](http://www.easydarwin.org/skin/easydarwin/images/wx_qrcode.jpg)
相关文章推荐
- C#调用EasyPusher推送到EasyDarwin实现视频流中转
- C#调用EasyPusher推送到EasyDarwin实现视频流中转
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
- C#程序实现动态调用DLL的研究
- c#使用委托实现异步调用
- 实现用C#和VB.NET调用Ghostscript的API,把Postscript文件转为PDF文件。
- C#实现Web程序调用Windows程序的方法
- C#下的webservcie 实现代码和 在vc和python下的调用实现(原创)
- 不用AJAX实现前台JS调用后台C#方法(小技巧) (转)
- C#调用Windows API函数,实现透明窗体
- C# 调用API,实现注销远程登录本机的用户。
- C#调用WinRAR实现压缩与解压缩
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
- C#程序实现动态调用DLL的研究
- C#调用GDI实现.NET中XOR、AND和OR模式的贴图
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
- VC++中调用C#.Net生成的COM组件的实现
- 调用C#实现系统功能类的主要方法
- 不用AJAX实现前台JS调用后台C#方法(小技巧)