0

我想将 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?为什么我不能在 Windows 上使用 OpenGL?也许有人有这个主题的经验 - 我会很感激你的帮助!

4

1 回答 1

1

你肯定需要 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 的原因。

于 2013-03-15T16:57:17.390 回答