如何使用 DirectShow 将音频流写入内存缓冲区而不是文件?
我制作了一个示例应用程序,它构建了一个过滤器图来捕获来自麦克风的音频并将其流式传输到文件。是否有任何过滤器允许我流式传输到内存缓冲区?
我正在遵循 的文章中概述的方法msdn 并且当前正在使用 CLSID_FileWriter
对象将音频写入文件。这很好用,但我不知道如何写入内存缓冲区。
是否有这样的内存接收器过滤器或者我必须自己创建它? (我更喜欢与 Windows XP 捆绑在一起的一个)
I have made a sample application which constructs a filter graph to capture audio from the microphone and stream it to a file. Is there any filter which allows me to stream to a memory buffer instead?
I'm following the approach outlined in an article on msdn and are currently using the CLSID_FileWriter
object to write the audio to file. This works nicely, but I cannot figure out how to write to a memory buffer.
Is there such a memory sink filter or do I have to create it myself? (I would prefer one which is bundled with windows XP)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的方法(尽管不是最优雅的)是使用 示例抓取器 过滤器,后跟 Null渲染器过滤器终止图形。这将使您能够使用示例抓取器的 ISampleGrabber 接口。获得样本后,您可以对它们进行您喜欢的操作。
The easiest way to do this (although not the most elegant) is to use a Sample Grabber filter followed by a Null Renderer filter to terminate the graph. This will enable you to get access to the raw media stream using the sample grabber's ISampleGrabber interface. Once you have the samples you can do what you like with them.
使用 IMediaSample::GetPointer 检索指向的指针缓冲区的原始数据。
Use IMediaSample::GetPointer to retrieve a pointer to the buffer's raw data.