AudioQueue 和 iOS4?

Posted

技术标签:

【中文标题】AudioQueue 和 iOS4?【英文标题】:AudioQueue and iOS4? 【发布时间】:2010-06-27 08:47:20 【问题描述】:

以下代码过去对我有用。我现在正在用 ios4 尝试它,但没有运气。它在模拟器中工作,但我在设备本身上听不到任何声音。我首先尝试将少量样本记录到NSMutableData 变量中,然后尝试回放它们。

我已经尝试过 Apple 的 SpeakHere 示例 - 可以正常工作(但它是从文件中播放的 - 而不是内存)。

知道我错过了什么吗?

AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);

AudioQueueNewOutput(&m_format,&OutputCallback,self,CFRunLoopGetCurrent(), kCFRunLoopCommonModes,0,&m_device);   
AudioQueueBufferRef nBuffer=NULL;
AudioQueueAllocateBuffer(m_device,[data length],&nBuffer);
nBuffer->mAudioDataByteSize=[data length];
[data getBytes:(nBuffer->mAudioData) length:(nBuffer->mAudioDataByteSize)];
AudioQueueEnqueueBuffer(m_device,nBuffer,0,NULL);
AudioQueueStart(m_device,NULL);

【问题讨论】:

【参考方案1】:

我可以建议的主要内容是:

(1) 确保设备未静音且音量已调高

(2) 检查结果代码。例如:

OSStatus errorCode = AudioQueueNewOutput (...) ;

if ( errorCode ) NSLog ( @"Error: %u" , errorCode ) ;

可以为您提供更多信息的其他内容:

虽然它应该正在运行,但请尝试调整音量。如果它调整铃声音量,则 AudioQueue 没有正确播放和/或设置。如果它调整了播放音量,那么 AudioQueue 在请求时可能没有获取数据。

作为记录,我有一个应用程序在所有设备上使用 iOS 4 上的 AudioQueue,所以我知道它可以正常工作,这不是错误。

坚持下去:AudioQueue 有时会非常非常烦人。

【讨论】:

以上是关于AudioQueue 和 iOS4?的主要内容,如果未能解决你的问题,请参考以下文章

AVCaptureSession 和 AudioQueue

如何在 AudioQueue 中检查当前时间和持续时间

简单的 AudioQueue 正弦波——为啥会失真?

AudioQueue 不起作用 Window Miniaturize

音频队列 |在 audioQueue 运行时更改音频设备

使用 AudioQueue 和 Monotouch 静态声音录制