编写音频源过滤器用作 Lync 麦克风
Write an audio source filter for use as Lync microphone
我正在尝试编写可被 Microsoft Lync 客户端识别为 Microphone
源的 DirectShow 音频捕获过滤器。这些是我已经采取的步骤:
过滤器派生自CSource
;它的输出引脚派生自 CSourceStream
并实现 IKsPropertySet
和 IAMStreamConfig
以及所有必要的方法(包括 IUnknown
方法)
确保 AM_MEDIA_TYPE
及其 WAVEFORMATEX
header 的适当元数据设置在 GetStreamCaps()
和 GetMediaType()
在fillBuffer()
中,每个媒体样本都填充了一个正弦波测试序列
为 COM 服务器创建 class 工厂并在 .def
文件中导出 DLL 函数,在 CLSID_AudioInputDeviceCategory
.
下注册过滤器
使用 regsvr32
注册我的过滤器后,目前在 GraphEdit 中一切正常:过滤器显示在 Audio Capture Devices 下,音调播放正确。
但是,我在 "real" 程序中得到不同的结果。例如,在 Picasa 的网络摄像头测试器中,过滤器显示为音频源,但切换到它会使程序崩溃。
在所有版本的 Lync 客户端中,过滤器根本不显示为 Audio Device -> Microphone
下的 Microphone
选择。我在 Lync documentation 中读到,只返回带有物理扬声器和麦克风的虚拟音频设备。
又看了一圈,好像Virtual Audio Cable达到了被系统识别的效果,如下图:
我需要编写自己的解决方案的灵活性 code-wise,它具有不需要购买许可证的额外好处。
我是否需要切换到 Windows Media Foundation、在我的过滤器中支持额外的接口、将源过滤器与硬件扬声器源耦合等?
我需要采取哪些步骤才能使我的过滤器显示为 Microphone
来源?
Lync (Skype for Business) 不使用 DirectShow 进行音频捕获,因此它看不到您的虚拟设备并且无法拾取它。据推测,它使用 WASAPI。 Virtual Audio Cable 大概实现了音频设备的内核级驱动程序,WASAPI 通过用户模式 API 拾取并公开。无法将您的虚拟音频源连接到不使用 DirectShow 进行音频捕获的应用程序。
我正在尝试编写可被 Microsoft Lync 客户端识别为 Microphone
源的 DirectShow 音频捕获过滤器。这些是我已经采取的步骤:
过滤器派生自
CSource
;它的输出引脚派生自CSourceStream
并实现IKsPropertySet
和IAMStreamConfig
以及所有必要的方法(包括IUnknown
方法)确保
AM_MEDIA_TYPE
及其WAVEFORMATEX
header 的适当元数据设置在GetStreamCaps()
和GetMediaType()
在
fillBuffer()
中,每个媒体样本都填充了一个正弦波测试序列为 COM 服务器创建 class 工厂并在
下注册过滤器.def
文件中导出 DLL 函数,在CLSID_AudioInputDeviceCategory
.
使用 regsvr32
注册我的过滤器后,目前在 GraphEdit 中一切正常:过滤器显示在 Audio Capture Devices 下,音调播放正确。
但是,我在 "real" 程序中得到不同的结果。例如,在 Picasa 的网络摄像头测试器中,过滤器显示为音频源,但切换到它会使程序崩溃。
在所有版本的 Lync 客户端中,过滤器根本不显示为 Audio Device -> Microphone
下的 Microphone
选择。我在 Lync documentation 中读到,只返回带有物理扬声器和麦克风的虚拟音频设备。
又看了一圈,好像Virtual Audio Cable达到了被系统识别的效果,如下图:
我需要编写自己的解决方案的灵活性 code-wise,它具有不需要购买许可证的额外好处。
我是否需要切换到 Windows Media Foundation、在我的过滤器中支持额外的接口、将源过滤器与硬件扬声器源耦合等?
我需要采取哪些步骤才能使我的过滤器显示为 Microphone
来源?
Lync (Skype for Business) 不使用 DirectShow 进行音频捕获,因此它看不到您的虚拟设备并且无法拾取它。据推测,它使用 WASAPI。 Virtual Audio Cable 大概实现了音频设备的内核级驱动程序,WASAPI 通过用户模式 API 拾取并公开。无法将您的虚拟音频源连接到不使用 DirectShow 进行音频捕获的应用程序。