如何使用 Speakhere 示例中的 AQRecorder

Posted

技术标签:

【中文标题】如何使用 Speakhere 示例中的 AQRecorder【英文标题】:how to use AQRecorder from speakhere example 【发布时间】:2012-07-03 20:14:12 【问题描述】:

我已经从 speakHere 示例中复制了 AQRecorder 以及所有其他需要的文件。这样做之后,由于编译错误,我将链中使用它的所有类重命名为 .mm,现在似乎已解决。 但是我仍然无法弄清楚如何使用 AQRecorder 类。该示例中还有另一个名为 SpeakHereController 的类,但这也不起作用。 这是我最近尝试的代码:

#import "AQRecorder.h"

    AQRecorder recorder;
    [recorder startRecord];

错误:错误的接收器类型“AQRecorder”

我知道这不起作用有几个原因,一个是它没有调用构造函数,而且我相信这应该是一个指针。 我有很多不同的变体,就像我说的,我也尝试过使用 SpeakHereController:

 SpeakHereController * recorder;
    recorder = [[SpeakHereController alloc]init];
        [recorder startRecord];

但是这会产生错误:

架构 i386 的未定义符号:“AQPlayer::StopQueue()”, 参考自: -SpeakHereController.o 中的[SpeakHereController stopPlayQueue]

“AQPlayer::PauseQueue()”,引用自: -SpeakHereController.o 中的[SpeakHereController pausePlayQueue]

“AQPlayer::DisposeQueue(unsigned char)”,引用自: -SpeakHereController.o中的[SpeakHereController stopRecord]

“AQPlayer::CreateQueueForFile(__CFString const*)”,引用自: -SpeakHereController.o中的[SpeakHereController stopRecord]

“AQPlayer::StartQueue(signed char)”,引用自: -[SpeakHereController 播放:] 在 SpeakHereController.o SpeakHereController.o中的interruptListener(void*, unsigned long)

“AQPlayer::AQPlayer()”,引用自: -SpeakHereController.o 中的[SpeakHereController awakeFromNib]

“AQPlayer::~AQPlayer()”,引用自: -SpeakHereController.o中的[SpeakHereController dealloc]

【问题讨论】:

【参考方案1】:

我最终使用了这个

   SpeakHereController * recorder;
    recorder = [[SpeakHereController alloc]init];
    [recorder awakeFromNib];

但是我只需要记录器,为此我必须注释掉文件中的所有 AQPlayer 引用。无论出于何种原因,它的播放方法都有一堆链接器错误。

调用awakeFromNib的原因是该方法很像init,初始化AQRecorder/AudioQueue的所有设置

【讨论】:

以上是关于如何使用 Speakhere 示例中的 AQRecorder的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SpeakHere 1 个通道上的示例录音

修改 SpeakHere 以录制设备上播放的音频

如何修改 Speak Here 示例代码来录制流式音频?

SpeakHere 的 AudioQueue 代码在 iPad 上失败

使用音频队列框架录制的数据格式

如何在录制过程中获得录制音频的确切持续时间?