C# 視頻監控系列(5):用戶端——給伺服器端發送字串和錄影(資料擷取)

來源:互聯網
上載者:User

 

前言

     這幾天加緊趕工寫伺服器端的程式,所有系列文章更新較慢,見諒: )

 

注意

     本系列文章限於學習交流,注重過程,由於涉及公司,所以不提供原始碼下載,非常抱歉!!但是請大家放心,核心、實現以及其他能夠貼出來的代碼我都會貼出來,並且爭取盡所能的回答留言裡的每一個問題,感謝大家關注,歡迎交流

 

系列

     1.     C# 視頻監控系列(1):準備

     2.     C# 視頻監控系列(2):用戶端——封裝API

     3.     C# 視頻監控系列(3):用戶端——串連伺服器

     4.     C# 視頻監控系列(4):用戶端——音頻接收和抓圖

     5.     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

          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就沒有了,比較奇怪,不過影響不大:)

 

結束

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.