C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
前言
?????這幾天加緊趕工寫服務(wù)器端的程序,所有系列文章更新較慢,見諒: )
?
注意
?????本系列文章限于學習交流,注重過程,由于涉及公司,所以不提供源代碼下載,非常抱歉!!但是請大家放心,核心、實現(xiàn)以及其他能夠貼出來的代碼我都會貼出來,并且爭取盡所能的回答留言里的每一個問題,感謝大家關(guān)注,歡迎交流 :)
?
系列
?????1.?????C# 視頻監(jiān)控系列(1):準備
?????2.?????C# 視頻監(jiān)控系列(2):客戶端——封裝API
?????3.?????C# 視頻監(jiān)控系列(3):客戶端——連接服務(wù)器
?????4.?????C# 視頻監(jiān)控系列(4):客戶端——音頻接收和抓圖
?????5.?????C# 視頻監(jiān)控系列(5):客戶端——給服務(wù)器端發(fā)送字符串和錄像(數(shù)據(jù)捕獲)
?
正文
?????一、給服務(wù)器發(fā)送字符串
??????????實現(xiàn)這個功能非常簡單,感覺不怎么實用。
??????????1.?????VC++ Code:
MP4_ClientCommandtoServer((LPCTSTR)ctemp,sendcont,400);??????????2.?????C# Code:?
PcHikClient.MP4_ClientCommandtoServer("192.168.0.188",?"服務(wù)器你好:)",?14);??????????從API文檔中能找到關(guān)于這個方法的說明:第一個參數(shù)是服務(wù)器的IP,第二個是要發(fā)送的字符串,第三個參數(shù)是字符串長度。
?????二、客戶端對視頻錄像
??????????客戶端視頻錄像從API文檔(Hikvision 板卡網(wǎng)絡(luò)開發(fā)包編程手冊V4.7)中可以看得出可以由MP4_ClientStartCapture或MP4_ClientStartCaptureFile函數(shù)來實現(xiàn)這個功能,從VC++的源碼可以看得出他是用后者來實現(xiàn)的,簡單省事,但是服務(wù)器端就沒這個函數(shù)了- _-#。但是MP4_ClientStartCapture通過回調(diào)自己寫存儲代碼更加靈活,可以實現(xiàn)諸如統(tǒng)計信息之類的額外功能,這里只提供VC++對應(yīng)的C#版本的MP4_ClientStartCaptureFile
??????????1.?????VC++ Code:
????//開始錄像????if?(nn1?>=?0)
????{
????????sprintf(filename,"d:\\mp4test1_%d.mp4",capcount);
????????MP4_ClientStartCaptureFile(nn1,filename);
????????//MP4_ClientStartCapture(nn1);
????}
????//關(guān)閉錄像
????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參數(shù)對應(yīng)錯誤,否則無法創(chuàng)建文件并一直返回false,現(xiàn)在已經(jīng)更新前面的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參數(shù)數(shù)據(jù)類型變化。MP4_ClientStopCapture的參數(shù)也是long數(shù)據(jù)類型,不過不影響,改不改成int無所謂。
?
遺留問題
?????保存下來的mp4文件顯示的播放總時間和實際播放時間總是差3秒,例如總時間是48秒,而播到45就沒有了,比較奇怪,不過影響不大:)
?
結(jié)束
??????????本章內(nèi)容仍然簡單,出錯仍然出在數(shù)據(jù)類型對應(yīng)上,所以大家需要多留意了: )
轉(zhuǎn)載于:https://www.cnblogs.com/carekee/articles/2220198.html
總結(jié)
以上是生活随笔為你收集整理的C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么自己安装win10系统 如何在电脑上
- 下一篇: C# HttpHelper帮助类,真正的