如何使用DirectShow将音频流写入内存缓冲区而不是文件?

时间:2010-03-12 13:39:16

标签: c++ directshow

我制作了一个示例应用程序,它构建了一个过滤器图形来捕获来自麦克风的音频并将其传输到文件中。有没有允许我流式传输到内存缓冲区的过滤器?

我正在遵循msdn上的文章中概述的方法,目前正在使用CLSID_FileWriter 对象将音频写入文件。这很好用,但我无法弄清楚如何写入内存缓冲区。

是否有这样的内存接收器过滤器或我是否必须自己创建? (我更喜欢与Windows XP捆绑的一个)

2 个答案:

答案 0 :(得分:5)

最简单的方法是使用Sample Grabber过滤器后跟Null Renderer过滤器来终止图表。这将使您能够使用示例抓取器的ISampleGrabber接口访问原始媒体流。获得样品后,您可以随意使用它们。

答案 1 :(得分:0)

使用IMediaSample::GetPointer检索指向缓冲区原始数据的指针。