gpt4 book ai didi

c++ - 编写音频源过滤器用作 Lync 麦克风

转载 作者:可可西里 更新时间:2023-11-01 10:19:51 32 4
gpt4 key购买 nike

我正在尝试编写一个 DirectShow 音频捕获过滤器,它可以被 Microsoft Lync 客户端识别为 Microphone 源。这些是我已经采取的步骤:

  1. 过滤器派生自CSource;它的输出引脚派生自 CSourceStream 并实现了 IKsPropertySetIAMStreamConfig 以及所有必要的方法(包括 IUnknown 方法)

  2. 确保在 GetStreamCaps()GetMediaType 中为 AM_MEDIA_TYPE 及其 WAVEFORMATEX header 设置适当的元数据()

  3. fillBuffer()中,每个媒体样本都填充了一个正弦波测试序列

  4. 为 COM 服务器创建类工厂并在 .def 文件中导出 DLL 函数,在 CLSID_AudioInputDeviceCategory 下注册过滤器。

    <

在使用 regsvr32 注册我的过滤器后,GraphEdit 中当前的一切正常:过滤器显示在 Audio Capture Devices 下,并且音调正常播放。

GraphEdit.exe demonstration


但是,我在“真实”程序中得到不同的结果。例如,在 Picasa 的网络摄像头测试器中,过滤器显示为音频源,但切换到它会使程序崩溃。

在所有版本的 Lync 客户端中,过滤器根本不会显示为 Audio Device -> Microphone 下的 Microphone 选项。我读过 Lync documentation仅返回带有物理扬声器和麦克风的虚拟音频设备。

再四处看看后,似乎Virtual Audio Cable产生被系统识别的预期效果,如下图:

Lync VAC demo


我需要以代码方式编写自己的解决方案的灵 active ,这具有无需购买许可证的额外好处。

我是否需要切换到 Windows Media Foundation、在我的过滤器中支持额外的接口(interface)、将源过滤器与硬件扬声器源等结合起来?

我需要采取哪些步骤才能使我的过滤器显示为麦克风源?

最佳答案

Lync (Skype for Business) 不使用 DirectShow 进行音频捕获,因此它看不到您的虚拟设备,也无法拾取它。据推测,它使用 WASAPI。 Virtual Audio Cable 大概实现了音频设备的内核级驱动程序,WASAPI 通过用户模式 ​​API 获取并公开该驱动程序。无法将您的虚拟音频源连接到不使用 DirectShow 进行音频捕获的应用程序。

关于c++ - 编写音频源过滤器用作 Lync 麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706844/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com