本文實作客戶端兩項實用功能:向服務端發送自訂字串指令、本地錄像存檔(MP4 容器)。並修正先前 API 簽名中 StockHandle 型別錯誤(long → int)。
// 服務端 IP、指令內容、指令長度(位元組數)
PcHikClient.MP4_ClientCommandtoServer("192.168.0.188", "伺服器你好:)", 14);
功能簡單,適用於簡易控制指令傳遞。
MP4_ClientStartCaptureFile:直接寫入 MP4 檔,最簡單。MP4_ClientStartCapture:回調方式,需自行寫入檔案,較彈性可加統計資訊。本文採用第一種。
int cs; // MP4_ClientStart 回傳的連線代碼
private void btnStartCap_Click(object sender, EventArgs e)
{
// 開始錄影存為 MP4
PcHikClient.MP4_ClientStartCaptureFile(cs, @"D:\mp4test1_0.mp4");
}
private void btnStopCap_Click(object sender, EventArgs e)
{
PcHikClient.MP4_ClientStopCapture(cs);
}
| VC++ 原型 | 修正前 | 修正後 |
|---|---|---|
LONG StockHandle | long StockHandle | int StockHandle |
VC++ LONG 為 32 位有號整數,對應 C# int。MP4_ClientStopCapture 同理。修正後才能正常建立檔案。
產生的 MP4 檔播放總時間比實際長約 3 秒(如顯示 48 秒,實際播到 45 秒結束),不影響正常觀看,後續可研究容器時間戳修正。