天天看點

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

    //開始錄像

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

        }

        /// 停止錄像

        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無所謂。

繼續閱讀