程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 視頻監控系列(3):客戶端——連接服務器並預覽(2)

C# 視頻監控系列(3):客戶端——連接服務器並預覽(2)

編輯:關於C語言

有VC++代碼可以看得出來接下來代碼都和這差不多,應該就是初始化 顯示四個窗口的代碼了,那我們就不需要把這個方法裡面的代碼全部翻譯了,只需要達到連接一個視頻窗口的目的就可以了,翻譯的過程中可 以自己先臨時設置一些變量來讓代碼跑起來,翻譯過程中每次都執行到MP4_ClIEntRigisterDrawFun方法的時候就報錯了,但是畫面確已經出來 了,所有我就從這裡截斷了,先達到目的再說,請看翻譯對象的C#代碼:

int cs;

        private void button1_Click(object sender, EventArgs e)
        {
            CLIENT_VIDEOINFO cVideo = new CLIENT_VIDEOINFO();
            //對應服務端通道號
            cVideo.m_bRemoteChannel = (byte)0;
            //網絡連接模式
            cVideo.m_bSendMode = (byte)SEND_MODE.TCPMODE;
            //服務端IP地址
            cVideo.m_sIPAddress = "192.168.0.188";
            //顯示區域
            cVideo.m_hShowVideo = pVideo.Handle;//(IntPtr)null;
            //圖像格式
            cVideo.m_nImgFormat = (byte)0;
            //用戶名
            cVideo.m_sUserName = "123";
            //密碼
            cVideo.m_sUserPassWord = "w";
            //是否需要發生密碼
            cVideo.m_bUserCheck = true;

            //設置多播的TTL參數
            PcHikClient.MP4_ClIEntSetTTL((char)64);
            //啟動客戶端
            cs = PcHikClient.MP4_ClIEntStart(ref cVideo, new ReadDataCallBack(MyRealDataCallBack1));
        }

        private void MyRealDataCallBack1(ulong port, [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer, ulong pSize)
        {
            MessageBox.Show(pBuffer.Length.ToString());
}

需要注意的是,VC++裡面的指針類型,如 HWND一般可以對應C#裡面的IntPtr數據類型,ReadDataCallBack是回調函數,但是沒有執行,不過至此畫面已經能夠顯示出來!!

那麼 接下來做畫面切割,右鍵事件什麼的都只需要你WinForm的開發經驗了,我是用的四個面板(Panel)切換隱藏顯示的;pVideo是Panel控件;用戶 名和密碼隨便設置也能連得上。

5.3 關閉連接

同樣找到VC++代碼:

if (nn1 >= 0)
    {
        MP4_ClIEntStopCapture(nn1);
        MP4_ClIEntStop(nn1);
    }
               對應C#代碼:

        private void Close()
        {
            PcHikClient.MP4_ClIEntStop(cs);
            PcHikClient.MP4_ClIEntStopCapture(cs);
            pVideo.Invalidate(true);
        }

需要注意的是這個cs變量,在連接的時候MP4_ClIEntStart返回值,需要拿全局變量保存起來,以便這裡關閉 的時候需要,從API文章裡面我們也能看到這樣的說明。這段代碼最好在窗體關閉的時候也加上!!

注意

摘抄:

DS400xM/DS400xH卡在客戶端機器運行的要求

主要是針對運行客戶端程序的計算機顯卡有要求,需支持Overlay功能,目前主流 的顯卡nvidia,ati,Intel845GL集成的系列都支持Overlay功能。

在PIII 833的計算機上,可以比較流暢的軟解碼4路普通的實時圖象; 在PIV 2G的計算機上,可以比較流暢的軟解碼8-9路普通的實時圖象;如果用我們公司的硬解碼卡,只要顯卡支持Overlay功能,就可以支持最 多達24路的實時圖象,並且支持VideoOut功能,可以上電視牆。

結束

如果本文能帶你實現預覽的功能,將使你信心百倍,效果 才是最有說服力的,並祝你好運: )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved