各位專家好:有一個問題想請教,我的wpf界面有幾個實時預覽海康威視攝像頭的界面,
我把攝像頭播放的視窗做成一個UserControl。
當加載兩個視窗實時預覽的時候CPU占用率就有50%高了。
前臺寫法:
<formsIntegration:WindowsFormsHost x:Name="windowsFormsVideoHost" Panel.ZIndex="11111111">
<forms:PictureBox x:Name="RealPlayWnd"
BackColor="Transparent" >
</forms:PictureBox>
</formsIntegration:WindowsFormsHost>
后臺寫法:
CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
lpPreviewInfo.hPlayWnd =
RealPlayWnd.Handle;//預覽視窗
lpPreviewInfo.lChannel = 1;//預te覽的設備通道
lpPreviewInfo.dwStreamType = 0;//碼流型別:0-主碼流,1-子碼流,2-碼流3,3-碼流4,以此類推
lpPreviewInfo.dwLinkMode = 0;//連接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流
lpPreviewInfo.dwDisplayBufNum = 15; //播放庫播放緩沖區最大緩沖幀數
CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//預覽實時流回呼函式
IntPtr pUser = new IntPtr();//用戶資料
//打開預覽 Start live view
m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser);
請問各位專家有什么處理方案嗎?
uj5u.com熱心網友回復:
Hi,WPF的影片,資料系結,復雜的布局,渲染...以及你后臺的復雜的計算, 這些都會導致高CUP占用。
如果僅僅是預覽圖片,為什么要用Winform的控制元件,WPF的Image不能滿足需求嗎?
另外,你有沒有在性能好點機器上跑程式?
我建議你嘗試使用CPU分析工具分析你的程式。
Sincerely,
Bob
uj5u.com熱心網友回復:
Hi,WPF的影片,資料系結,復雜的布局,渲染...以及你后臺的復雜的計算, 這些都會導致高CUP占用。
如果僅僅是預覽圖片,為什么要用Winform的控制元件,WPF的Image不能滿足需求嗎?
另外,你有沒有在性能好點機器上跑程式?
我建議你嘗試使用CPU分析工具分析你的程式。
Sincerely,
Bob
uj5u.com熱心網友回復:
Hi,WPF的Image是沒有句柄的,海康威視實時預覽視頻的sdk是要控制元件的句柄的,
有什么方法可以獲取句柄嗎
uj5u.com熱心網友回復:
Hi,
WPF的Image是沒有句柄的,海康威視實時預覽視頻的sdk是要控制元件的句柄的,
有什么方法可以獲取句柄嗎
一種就是視頻解碼這塊還是用win32完成,作為dll或者exe,嵌入到WPF界面中
還有一種是將SDK中的碼流回呼出來后自己處理然后通過WPF的MEDIA或者image控制元件展示出來,這個我沒試過,理論上可行
uj5u.com熱心網友回復:
我也遇到這樣的問題,你后來怎么解決的?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/79390.html
標籤:其他技術討論專區
