捕获麦克风的缓冲区

时间:2014-12-02 06:51:58

标签: visual-c++ audio directshow

我正在创建一个程序,它将使用Visual C ++中的DirectShow API录制麦克风音频并将其转换为mp3。 没有内置的过滤器转换为音频转换为MPEG Layer 3即MP3所以我想将麦克风缓冲区发送到一个名为LAME的外部库,它将转换MP3中的数据然后我可以使用它将其写入文件文件编写者。 但问题是我不知道如何访问麦克风的缓冲区,请帮助我,我是directshow编程的新手..

或者告诉我任何其他方法

2 个答案:

答案 0 :(得分:0)

您应该可以使用Sample Grabber

执行此操作

您使用将接收样本的回调对象进行设置。您可以仅使用源,样本抓取器和Null Renderer创建图形。

答案 1 :(得分:0)

如果您想分发您的应用程序,我建议使用Sample Grabber而不是Lame DirectShow Encoder过滤器。这将避免过滤器注册,但您需要处理转换逻辑。

关于使用LAME编码器,

  1. hr = pOutputDevice-> FindPin()的返回值是多少?
  2. 您可以尝试使用GraphEdit并检查引脚属性。