调用NET_DVR_RigisterDrawFun试试NET_DVR_RigisterDrawFun
预览画面叠加字符和图像,Linux下无此接口。BOOL NET_DVR_RigisterDrawFun(
  LONG        lRealHandle,
  fDrawFun    cbDrawFun,
  DWORD       dwUser
);
Parameters
lRealHandle 
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值 
cbDrawFun 
[in] 画图回调函数 
dwUser 
[in] 用户数据 
Callback Function
typedef void(CALLBACK *fDrawFun)(
  LONG      lRealHandle,
  HDC       hDc,
  DWORD     dwUser
);
Callback Function Parameters
lRealHandle 
[out] 当前的预览句柄 
hDc 
[out] 画图DC 
dwUser 
[out] 用户数据 
Return Values
TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastErrorRes
该接口主要完成注册回调函数,获得当前表面的device context。用户可以在这个DC上画图或写字,就好像在窗口的客户区DC上绘图,但这个DC不是窗口客户区的DC,而是播放器DirectDraw里的Off-Screen表面的DC。 如果调用接口NET_DVR_RealPlay_V30进行预览,参数bBlocked建议置1(TRUE),这样预览接口返回成功即可该调用该接口。如果参数bBlocked置0,预览接口返回成功但图像还未正常显示,该接口会返回失败,获取错误号为12(调用次序错误)。

解决方案 »

  1.   

    还用一种方式就是调用NET_DVR_RealPlay_V30时设置回调函数
    得到视频数据后,调用海康播放库解码,然后自己用DDraw自己做显示,通过DDraw的离屏表面将自己的内容叠加上去;也可以调用Win32API实现,但是需要自己将得到YUV数据转换成RGB,WIN32API不支持YUV数据显示。
    关于各个接口的调用历程,可以参考海康播放库文档:
    流模式下
    PlayM4_GetPort
    PlayM4_SetStreamOpenMode
    PlayM4_OpenStream
    PlayM4_SetDisplayBuf
    PlayM4_Play
    (PlayM4_ReversePlay) 倒放接口
    PlayM4_InputData
    PlayM4_Stop
    PlayM4_CloseStream
    PlayM4_FreePort
      

  2.   

    这个在SDK开发文档中有涉及,我现在就是还有点不明白,这个DC是怎么回事,怎么用.
    可以直接 Graphics g= Graphics.FromImage(DC)?
      

  3.   

    用C#调用海康的SDK超蛋疼,Demo中C#版本的功能超少
      

  4.   

    这个在SDK开发文档中有涉及,我现在就是还有点不明白,这个DC是怎么回事,怎么用.
    可以直接 Graphics g= Graphics.FromImage(DC)?
    DC是设备环境句柄,为了方便开发人员,微软将设备信息封装起来,只返回给开发人员一个DC,作为设备的标示。
    MFC获取设备句柄的方式 CWnd::GetDC(); C#就不知道了。
      

  5.   

    今天有朋友和我说,获取YUV视频流,然后转化为图片,对图片处理后,用回调函数回调
    好像是这个意思,对么?
    主要我想实现的是在,预览画面之前,对画面进行处理,然后再预览出来
    不是回放的时候对画面进行处理。
      

  6.   

    还有就是图片处理这块,也有朋友说用OpenCv,今天装了1天,刚装好,VS C++下面测试通过了,现在正在搞C#下面的测试呢,主要还是不懂啊,先装上吧,需要了用的时候也方便
      

  7.   

    openCV没有研究过。我说的第一种方式最省事,但是我没有试过;第二种方式虽然费事,但是以前做过,是行的通的。
      

  8.   

    想问一下下楼主怎么在后台处理,在jsp页面上实现进本的预览?
      

  9.   

    楼主,这个怎么实现,我使用C#封装了海康的SDK,但使用这个方法(获取YUV视频流)回调得到的YUV是错误的,请问在调用这个回调函数之前是否有其他的步骤要实现?