天天看点

C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

前言

     这几天加紧赶工写服务器端的程序,所有系列文章更新较慢,见谅: )

注意

     本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心、实现以及其他能够贴出来的代码我都会贴出来,并且争取尽所能的回答留言里的每一个问题,感谢大家关注,欢迎交流 :)

系列

正文

     一、给服务器发送字符串

          实现这个功能非常简单,感觉不怎么实用。

          1.     vc++ code:

mp4_clientcommandtoserver((lpctstr)ctemp,sendcont,400);

          2.     c# code: 

pchikclient.mp4_clientcommandtoserver("192.168.0.188", "服务器你好:)", 14);

          从api文档中能找到关于这个方法的说明:第一个参数是服务器的ip,第二个是要发送的字符串,第三个参数是字符串长度。

     二、客户端对视频录像

          客户端视频录像从api文档(hikvision 板卡网络开发包编程手册v4.7)中可以看得出可以由mp4_clientstartcapture或mp4_clientstartcapturefile函数来实现这个功能,从vc++的源码可以看得出他是用后者来实现的,简单省事,但是服务器端就没这个函数了- _-#。但是mp4_clientstartcapture通过回调自己写存储代码更加灵活,可以实现诸如统计信息之类的额外功能,这里只提供vc++对应的c#版本的mp4_clientstartcapturefile

C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

    //开始录像

    if (nn1 >= 0)

    {

        sprintf(filename,"d:\\mp4test1_%d.mp4",capcount);

        mp4_clientstartcapturefile(nn1,filename);

        //mp4_clientstartcapture(nn1);

    }

    //关闭录像

    if (nn1>=0)

        mp4_clientstopcapture(nn1);

C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

           2.     c# code: 

C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

        /// <summary>

        /// 开始录像

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnstartcap_click(object sender, eventargs e)

        {

            pchikclient.mp4_clientstartcapturefile(cs, "d:\\mp4test1_0.mp4");

        }

        /// 停止录像

        private void btnstopcap_click(object sender, eventargs e)

            pchikclient.mp4_clientstopcapture(cs);

C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

          方法很简单,但是注意之前帖的mp4_clientstartcapturefile参数对应错误,否则无法创建文件并一直返回false,现在已经更新前面的sdk封装api的文章了,具体错误如下:

          vc++原型:

bool  __stdcall mp4_clientstartcapturefile(long stockhandle, lptstr filename);

          之前版本:

public static extern bool mp4_clientstartcapturefile(long stockhandle, string filename);

          更改后版本:

public static extern bool mp4_clientstartcapturefile(int stockhandle, string filename);

          注意stockhandle参数数据类型变化。mp4_clientstopcapture的参数也是long数据类型,不过不影响,改不改成int无所谓。

遗留问题

     保存下来的mp4文件显示的播放总时间和实际播放时间总是差3秒,例如总时间是48秒,而播到45就没有了,比较奇怪,不过影响不大:)

结束

          本章内容仍然简单,出错仍然出在数据类型对应上,所以大家需要多留意了: )

转载:http://www.cnblogs.com/over140/archive/2009/03/04/1400223.html

继续阅读