將 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");
}
private void Disconnect() {
PcHikClient.MP4_ClientStop(cs);
PcHikClient.MP4_ClientStopCapture(cs);
panelVideo.Invalidate(true);
}
⚠️ 必須在窗體 `FormClosing` 中調用,防止資源洩漏。