代码之家  ›  专栏  ›  技术社区  ›  Leo Chapiro

使用PJSIP并支持Windows视频

  •  0
  • Leo Chapiro  · 技术社区  · 12 年前

    我想将PJSIP与Windows程序(Win32/MFC/C++)的视频支持一起使用。通过查看PJSIP项目的现场( http://trac.pjsip.org/repos/wiki/Getting-Started/Windows )我看到了(其他要求):

    • DirectShow SDK,包含在Windows SDK中。
    • SDL 2.0版或1.3版

    在这种情况下,我需要在config_site.h中进行以下配置:

    #define PJMEDIA_HAS_VIDEO               1
    #define PJMEDIA_HAS_FFMPEG              1
    #define PJMEDIA_VIDEO_DEV_HAS_SDL       1
    #define PJMEDIA_VIDEO_DEV_HAS_DSHOW     1
    

    如果我把这两个组件添加到我的PJSIP项目中,一切都很好,我会收到关于来电的通知,我可以从门上的摄像头显示/捕捉视频。

    我的问题: 对于Windows程序,我真的需要这两个组件(SDL和DirectX/DirectShow)吗?这意味着,我是否必须需要SDL(我想不是),如果需要,我是否也需要DirectX?为什么我不能将OpenGL用于Windows?也许有人有这个主题的经验——我会感谢你的帮助!

    1 回复  |  直到 12 年前
        1
  •  1
  •   Jay Borseth    12 年前

    你肯定需要DirectShow。对要求SDL不积极。。。

    DirectShow为Windows中的视频捕获源提供流式接口。尽管DirectShow本身主要是一组用户模式组件,但提供的视频捕获过滤器(通常为KsProxy.ax)通过一组定义的接口和属性与内核级捕获驱动程序进行通信。一些相机制造商选择为自己的用户模式DirectShow捕获过滤器提供专用(通常是内核)硬件接口,这使得DirectShow成为所有Windows视频捕获设备的通用访问点。

    SDL提供了一个跨平台的库,可以快速访问显示器。PJSIP中的编解码器使用它将解码后的视频显示到显示器上。

    看起来像PJSIP 可能地 支持使用DirectShow作为渲染筛选器。请参阅: http://svn.pjsip.org/repos/pjproject/trunk/pjmedia/src/pjmedia-videodev/dshow_dev.c

    从来源来看,如果启用了第52行的DirectShow渲染器,则启用该渲染器的代码是否会起作用尚不清楚:

    /* Temporarily disable DirectShow renderer (VMR) */
    #define HAS_VMR         0
    

    由于这已经被注释掉了,我认为代码还没有完全完成,这就是为什么所有的示例都需要SDL的原因。