C# 视频监控系列(4):客户端——音频接收和截图
前言
由于音频接收这块的代码和说明不多,就和截图功能一起写了,Lets GO! !
注意
本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心、实现以及其他能够贴出来的代码我都会贴出来,并且争取尽所能的回答留言里的每一个问题,感谢大家关注,欢迎交流 :)
系列
正文
一、 写了三篇文章,来一张界面的草图,让大伙心里有个数。
二、 音频接受
音频接受的代码比较简单,服务器端是默认打开的,只要你将拾音器接上板卡接上标有AID 1/2/3/4白色线就可以了。
VC++ Code:
if (nn1 = 0 ){
MP4_ClientAudioStart(nn1);
MP4_ClientAudioVolume(0xfff0);
}
C# Code:
if (cs = 0){
PcHikClient.MP4_ClientAudioStart(cs);
PcHikClient.MP4_ClientAudioVolume(0xffff);
}
注意MP4_ClientAudioVolume设置的音量值范围:(0-0xffff)。
三、 抓图、截图
VC++ Code:
MP4_ClientSetCapPicCallBack(nn1,CapPicFun);void CALLBACK CapPicFun(long nPort,\
char * pBuf,long nSize,\
long nWidth,long nHeight,\
long nStamp,long nType,long nReceaved)
{
if(!((g_bCapPic) (nPort == ipos)))
return;
CString csFile;
switch(nType)
{
case T_UYVY:
csFile="c:\\uyvy.bmp";
break;
case T_YV12:
csFile="c:\\yv12.bmp";
break;
case T_RGB32:
csFile="c:\\rgb.bmp";
break;
default:
return ;
}
MP4_ClientSavePicFile(pBuf,nSize,nWidth,nHeight,nType,csFile.GetBuffer(csFile.GetLength()));
g_bCapPic=FALSE;
可以看得出,截图是通过回调来实现了,这里注意了,我们在写对应的回调函数的时候,需要把回调实例成成员变量。
C# Code:
private const int T_UYVY = 1;private const int T_YV12 = 3;
private const int T_RGB32 = 7;
private CapPicFun cpf;
private void button3_Click(object sender, EventArgs e)
{
PcHikClient.MP4_ClientSetCapPicCallBack(cs, cpf);
}
//public void CapPicFun1(int StockHandle, [MarshalAs(UnmanagedType.LPArray, SizeConst = 152064)] byte[] pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReceaved)
public void CapPicFun1(int StockHandle, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReceaved)
{
string csFile = string.Empty;
switch (nType)
{
case T_UYVY:
csFile = @"c:\uyvy.bmp";
break;
case T_YV12:
csFile = @"c:\yv12.bmp";
break;
case T_RGB32:
csFile = @"c:\rgb32.bmp";
break;
}
PcHikClient.MP4_ClientSavePicFile(pBuf, nSize, nWidth, nHeight, nType, csFile);
//停止执行回调
PcHikClient.MP4_ClientSetCapPicCallBack(cs, null);
}
代码说明:
1. button3点击事件对应的是界面上点击截图按钮的事件。
2. 从API文档中我们可以看到关于MP4_ClientSetCapPicCallBack的说明:“注意要尽快返回,如果要停止回调,可以把回调函数指针CapPicFun设为NULL。一旦设置回调函数,则一直有效,直到程序退出。”。
3. 请注意在上文的基础上运行客户端连上服务器并显示视频画面后再调用本函数,否则函数既不报错也不会截取图片。
4. 委托private CapPicFun cpf;的实例化我是在Form1_Load中进行的:cpf = new CapPicFun(CapPicFun1);
5. 不出意外的话,按照默认配置您的C盘根目录下应该会有yv12.bmp : )
结束
截图功能也是在我边写这篇文章的时候边实践的,用原来的API发现能截图并保存,但是图片打开是黑色的,后来修改参数类型才对。当然我也更新了前面的文章的API,希望一直这样比较顺利的完成这系列的文章,不得不夸海康的卡确实做的不错!!
转载:http://www.cnblogs.com/over140/archive/2009/02/27/1398221.html
VUE网页实时播放海康、大华摄像头RTSP视频流完全方案,300毫秒延迟,支持H.265、可多路同时播放 在遍地都是摄像头的今天,往往需要在各种信息化、数字化、可视化B/S系统中集成实时视频流播放等功能,海康、大华、华为等厂家摄像头或录像机等设备一般也都遵循监控行业标准,支持国际标准的主流传输协议RTSP输出,而Chrome、Firefox、Edge等新一代浏览器从2015年开始取消了NPAPI插件技术支持导致RTSP流无法直接原生播放了
音频开发中常见的四个错误 以下内容主要为音频开发人员所编写,但同样也能为其他领域并与此相关的开发者带来帮助。在下文当中我将介绍针对开发人员的诊断工具,并分享常见的四个错误以及如何检测问题是否存在并做得更好。
相关文章
- c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
- C#-FileSystemWatcher文件和文件夹监控
- c# 多线程并发-金三银四面试:C#.NET面试题高级篇2-多线程
- C#抓取网络图片保存到本地详解编程语言
- 配置C#的系统环境变量的方法
- javascript中字符串替换函数replace()方法与c#、vb替换有一点不同
- c#.net在WEB页中的COOKIES设置技巧
- 浅谈c#.net中巧用ToString()将日期转成想要的格式
- Asp.Net(C#)自动执行计划任务的程序实例分析分享
- 在X分钟内学会C#的入门简明教程
- C#窗体编程不显示最小化、最大化、关闭按钮的方法