gpt4 book ai didi

c++ - 如何在 directshow 中分割音频或编写 demuxer 过滤器?

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:34 25 4
gpt4 key购买 nike

我需要将最多 16 个 channel 的 PCM 音频流拆分为多个立体声流。由于我还没有找到任何能够做到这一点的东西,我正在尝试编写我的第一个 directshow 过滤器。

任何能够分割音频的东西都会受到欢迎,但我假设我必须这样做,所以这就是我所做的:

起初,我尝试创建一个基于 ITransformFilter 的过滤器。但是,它似乎想到了只有一个输入引脚和一个输出引脚的滤波器。因为我需要几个输出引脚,所以我忽略了它,但是也许它可以比我想象的更容易调整,所以非常感谢任何建议。

然后,我开始基于 IBaseFilter。我设法做了一些事情。我在输入引脚连接时创建必要的输出引脚,并在输入断开时销毁它们。但是,当我将任何输出引脚连接到 ACM Wrapper(只是为了测试它)时,输入会尝试重新连接,从而破坏我所有的输出引脚。我试着不破坏它们,但后来我检查了我的输入针的媒体类型,它已经变成了立体声流。我没有从我的代码中调用 QueryAccept。

我怎样才能避免重新连接,或者执行多路分离器过滤器的正确方法是什么?

编辑 2010-07-09:我已经回到 ITransformFilter,但我正在创建必要的引脚。但是,我遇到了与 IBaseFilter 相同的问题:当我将输出引脚连接到 ACM 包装器时,输入引脚将其媒体类型更改为 2 个 channel 。不确定现在如何进行...

最佳答案

您可以查看 Windows Server 2003 R2 Platform SDK 中的 DMOSample。它也包含在较旧的 directx sdk 中,但不包含在较新的 windows sdk 中。您可以在 Samples\Multimedia\DirectShow\DMO\DMOSample 中找到它。 Here是这个样本的文档。

我看到有人基于此创建了一个具有立体声输入和两个单声道输出的滤波器。很遗憾,我无法发布源代码。

关于c++ - 如何在 directshow 中分割音频或编写 demuxer 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197028/

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