程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#視頻監控系列(5):客戶端——給服務器端發送字符串和錄像(數據捕獲)

C#視頻監控系列(5):客戶端——給服務器端發送字符串和錄像(數據捕獲)

編輯:關於C語言

一、給服務器發送字符串

實現這個功能非常簡單,感覺不怎麼實用。

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

1.VC++ Code:

//開始錄像
    if (nn1 >= 0)
    {
        sprintf(filename,"d:\\mp4test1_%d.mp4",capcount);
        MP4_ClIEntStartCaptureFile(nn1,filename);
        //MP4_ClIEntStartCapture(nn1);
    }
    //關閉錄像
    if (nn1>=0)
        MP4_ClIEntStopCapture(nn1);

2.C# Code:

/// <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");
        }

        /// <summary>
        /// 停止錄像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStopCap_Click(object sender, EventArgs e)
        {
            PcHikClient.MP4_ClIEntStopCapture(cs);
        }

方法很簡單,但是注意之前帖的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就沒有了,比較奇怪,不過影響不大:)

結束

本章內容仍然簡單 ,出錯仍然出在數據類型對應上,所以大家需要多留意了: )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved