个人开发历程知识库

关注C++/Java/C#技术, 致力于安防监控/移动应用/WEB方面开发
------------------------------------ 业精于勤,荒于嬉;行成于思,毁于随
posts - 163, comments - 556, trackbacks - 0, articles - 18
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

   前几天看到园友农民伯伯写的C# 视频监控系列实现了对海康板卡的封装,这几天参与的项目进入了后续阶段了,现进行性能测试.测试流媒体服务器的稳定性,并发性,看看并发处理300-500路视频效果如何,部门没有那么多电脑用来测试,简单写了一个模拟客户端访问的程序来测试服务端程序性能.流媒体是用C++语言实现的,我现在要使用C#与之通信,会涉及下面几个方面内容.举例我现在想浏览前端大华的DVR/DVS上某一路视频,这里我们采用流媒体连接视频监控设备而非客户端去直连设备,流媒体接收到数据后再一一转发给当前想预览该路视频的客户端,客户端使用大华的PlaySDK解码播放.(至于通过大华NetSDK直连设备,你可以到大华网站下载其SDK包,当前最新版本好像是3.4,有提供封装好的C#访问Demo程序;这里流媒体支持多种厂商的监控设备的接入,包含海康,大华等)

客户端视频预览一般过程

1)如果当前已有画面正在预览,发送停止正在预览该路画面命令到服务端,关闭该路视频

一般调用PLAY_StopSound,PLAY_Stop,PLAY_CloseStream函数停止该路视频预览

2)发送视频预览请求

打开视频输入流PLAY_OpenStream,PLAY_Play,PLAY_PlaySound(同时开启音频);然后可以专门开一视频数据接收线程,把接收到视频数据提供给函数PLAY_InputData解码播放即可

   一般C++下我们进行网络传输模块开发,会采用结构体来封装组织通信报文,那采用C#开发的流媒体客户端程序需与服务端流媒体通信,就会碰到怎么把一个结构体转成一个byte数组,以及如何把收到的byte数组数据还原成结构体对象.我们这里就涉及到了C#与其它语言的互操作,也就是所谓的P/Invoke技术,主要也就是System.Runtime.InteropServices命名空间下的Marshal类的使用.(可参考园友tuyile006文章struct和byte[]相互转换(用Marshal类实现))还有就是C++与C#之间数据类型转换如unsigned char-->byte,char * -->string,HWND-->IntPtr,LONG/DWORD-->int,传递空指针使用IntPtr.Zero等(农民伯伯在其C# 视频监控系列(14):总结贴——VC++代码转成C#小结也做了一些介绍,可借鉴C#封装的海康DVR客户端SDK )

  接下来就实现代码,编译通过,运行一下.呀,弹出了一个提示在所指定的dll文件中找不到某函数的入口地址,检查代码,原来太粗心把函数PLAY_OpenStream定义成了Play_OpenStream,汗一个先,以后写程序要注意.(函数调用不成功,一般是函数定义错误,如函数名称或参数数据类型错误,可参考文章BugHunter 也谈c#调用C++的DLL找不到入口点 )最终效果如下图,很粗劣,大家不要见笑,画面1传输是文件流,画面2是实时视频流数据.

作者:peterzb个人开发历程知识库 - 博客园
出处:http://peterzb.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Feedback

#1楼  回复 引用 查看   

2009-08-07 10:15 by wr      
源码可以给我一份吗??正在学这方面的知识,我的邮箱是:286241293@qq.com,感谢!!!

#2楼[楼主]  回复 引用 查看   

2009-08-07 11:37 by peterzb      
@wr
不能够提供源码, 涉及公司其它产品应用, 如与流媒体交互; 你可以看文章中提到的园友们的文章, 有问题大家可以一起探讨交流

#3楼  回复 引用 查看   

2009-09-14 10:49 by hongjianwu      
求教,服务端发送视频流,客户端接收并播放的源码。如可以,请发送到46055437@qq.com.谢谢!

#4楼  回复 引用   

2009-10-03 16:41 by zhuimengwawa[未注册用户]
能给我一份源码吗?我想学习一下,非常感谢!我的邮箱zhangxiaofang0229@163.com

#5楼  回复 引用 查看   

2009-10-26 10:51 by 王昊      
问一下使用流媒体服务器的相关技术

#6楼  回复 引用 查看   

2009-11-04 15:45 by 杜彪      
求教,服务端发送视频流,客户端接收并播放的源码。如可以,请发送到273842742@qq.com

#7楼  回复 引用 查看   

2009-11-17 01:11 by       
拜托。。。人家叫播放SDK3.27.0 Windows版本,你就变成了playSDK。。。搞得我搜索不到。

#8楼  回复 引用 查看   

2009-11-17 01:14 by       
还有。好像都需要硬件支持。这个郁闷。

#9楼  回复 引用   

2009-12-09 09:27 by .NET游客[未注册用户]
能给我一份源码吗?我想学习一下,非常感谢!我的邮箱85011989@qq.com

#10楼  回复 引用 查看   

2011-07-06 11:41 by 露草      
能给我一份源码吗?我想学习一下,非常感谢!我的邮箱837138108@qq.com

#11楼  回复 引用 查看   

2011-08-28 12:05 by Ni_Yang      
我这边在做海康的回放。 但是在查找文件的时候出错了。能给我看看你查找文件跟按文件播放的。海康回放的功能吗?学习一下。谢谢了。比较急。。 396231680@qq.com

#12楼  回复 引用 查看   

2011-10-06 22:13 by 疯狂的石头陈      
能给我一份源码吗?我想学习一下,非常感谢!我的邮箱chenlei_0502@qq.com