none
wpf实时预览视频CPU占用率过高 RRS feed

  • 问题

  • 各位专家好:有一个问题想请教,我的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);

    请问各位专家有什么处理方案吗?

    2018年1月21日 11:04

答案

  • Hi,

    WPF的动画,数据绑定,复杂的布局,渲染...以及你后台的复杂的计算, 这些都会导致高CUP占用。

    如果仅仅是预览图片,为什么要用Winform的控件,WPF的Image不能满足需求吗?

    另外,你有没有在性能好点机器上跑程序?

    我建议你尝试使用CPU分析工具分析你的程序。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 xxyxxb2080 2018年1月23日 8:25
    2018年1月22日 6:30
    版主

全部回复

  • Hi,

    WPF的动画,数据绑定,复杂的布局,渲染...以及你后台的复杂的计算, 这些都会导致高CUP占用。

    如果仅仅是预览图片,为什么要用Winform的控件,WPF的Image不能满足需求吗?

    另外,你有没有在性能好点机器上跑程序?

    我建议你尝试使用CPU分析工具分析你的程序。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 xxyxxb2080 2018年1月23日 8:25
    2018年1月22日 6:30
    版主
  • Hi,

    WPF的Image是没有句柄的,海康威视实时预览视频的sdk是要控件的句柄的,

    有什么方法可以获取句柄吗

    2018年1月29日 7:14
  • Hi,

    WPF的Image是没有句柄的,海康威视实时预览视频的sdk是要控件的句柄的,

    有什么方法可以获取句柄吗

    一种就是视频解码这块还是用win32完成,作为dll或者exe,嵌入到WPF界面中

    还有一种是将SDK中的码流回调出来后自己处理然后通过WPF的MEDIA或者image控件展示出来,这个我没试过,理论上可行


    2018年3月8日 9:25