使用PJSIP与视频支持Windows

Using PJSIP with video support for Windows

本文关键字:支持 Windows 视频 PJSIP 使用      更新时间:2023-10-16

我想在Windows程序(Win32/MFC/c++)中使用带有视频支持的PJSIP。通过查看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项目中,一切工作正常,我收到关于来电的通知,我可以从门上的摄像机显示/捕获视频。

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

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