首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 視頻監控系列(三):客戶端連接預覽實現(二)

     編輯:關於C語言

將 VC++ Demo 連接預覽邏輯移植 C#,精簡至單通道預覽核心流程,解決 `MP4_ClientRegisterDrawFun` 報錯但畫面已出問題。

連接代碼

int cs; // 全局保存句柄

private void btnConnect_Click(object sender, EventArgs e) {
    var info = new CLIENT_VIDEOINFO {
        m_bRemoteChannel = 0,
        m_bSendMode = (byte)SEND_MODE.TCPMODE,
        m_sIPAddress = "192.168.0.188",
        m_hShowVideo = panelVideo.Handle, // 顯示面板句柄
        m_nImgFormat = 0,
        m_sUserName = "123",
        m_sUserPassWord = "w",
        m_bUserCheck = true
    };

    PcHikClient.MP4_ClientSetTTL(64);
    cs = PcHikClient.MP4_ClientStart(ref info, new ReadDataCallBack(OnRealData));
}

private void OnRealData(ulong port, byte[] buffer, ulong size) {
    MessageBox.Show($"收到數據: {buffer.Length} bytes");
}

關鍵點

  • `HWND` 對應 `Control.Handle` (`IntPtr`)
  • 回調 `ReadDataCallBack` 雖未執行但不影響畫面顯示
  • 用戶名密碼可任意(服務端未嚴格驗證)
  • 四畫面切換用多 `Panel` 隱藏/顯示實現

斷開連接


private void Disconnect() {
    PcHikClient.MP4_ClientStop(cs);
    PcHikClient.MP4_ClientStopCapture(cs);
    panelVideo.Invalidate(true);
}

⚠️ 必須在窗體 `FormClosing` 中調用,防止資源洩漏。

顯卡要求

  • 需支持 Overlay 功能(NVIDIA/ATI/Intel 845GL+ 均支持)
  • 軟解碼路數受 CPU 限制,硬解碼卡可達 24 路
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved