C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
前言
?????這幾天加緊趕工寫服務器端的程序,所有系列文章更新較慢,見諒: )
?
注意
?????本系列文章限于學習交流,注重過程,由于涉及公司,所以不提供源代碼下載,非常抱歉!!但是請大家放心,核心、實現以及其他能夠貼出來的代碼我都會貼出來,并且爭取盡所能的回答留言里的每一個問題,感謝大家關注,歡迎交流 :)
?
系列
?????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就沒有了,比較奇怪,不過影響不大:)
?
結束
??????????本章內容仍然簡單,出錯仍然出在數據類型對應上,所以大家需要多留意了: )
轉載于:https://www.cnblogs.com/carekee/articles/2220198.html
總結
以上是生活随笔為你收集整理的C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么自己安装win10系统 如何在电脑上
- 下一篇: 无法识别设备怎么办 设备无法被识别怎么办