iPhone 音频单元在后台录音,如何

标签 iphone core-audio audio-recording audiounit

我正在研究音频单元的录音功能。一切都很好,除了当应用程序处于后台时录制回调会停止,这与 AVCapture 不同,AVCapture 会在后台使用红条持续录制。有没有办法让它像 AVCapture 一样在后台继续录制?

#import "AudioUnit/AudioComponent.h"
#import "AudioUnit/AudioUnit.h"

desc.componentType          = kAudioUnitType_Output;
desc.componentSubType       = kAudioUnitSubType_RemoteIO;
desc.componentFlags         = 0;
desc.componentFlagsMask     = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;

AudioComponent inputComponent = AudioComponentFindNext(NULL, &desc);
status = AudioComponentInstanceNew(inputComponent, &audioUnit);
checkStatus(status);

UInt32 flag = 1;

status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, kInputBus, &flag, sizeof(flag));
checkStatus(status);

//status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, kOutputBus, &flag, sizeof(flag));
checkStatus(status);

AudioStreamBasicDescription     audioFormat;
audioFormat.mSampleRate         = 8000.00; //44100.00;
audioFormat.mFormatID           = kAudioFormatLinearPCM;
audioFormat.mFormatFlags        = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioFormat.mFramesPerPacket    = 1;
audioFormat.mChannelsPerFrame   = 1;
audioFormat.mBitsPerChannel     = 16;
audioFormat.mBytesPerPacket     = 2;
audioFormat.mBytesPerFrame      = 2;

status = AudioUnitSetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, kInputBus, &audioFormat, sizeof(audioFormat));
checkStatus(status);

status = AudioUnitSetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, kOutputBus, &audioFormat, sizeof(audioFormat));
checkStatus(status);

AURenderCallbackStruct callbackStruct;

callbackStruct.inputProc = recordingCallback;
callbackStruct.inputProcRefCon = self;

status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, kInputBus, &callbackStruct, sizeof(callbackStruct));
checkStatus(status);

最佳答案

哦,忘了设置

目标/信息/所需的背景模式/应用程序播放音频

到测试应用程序。

关于iPhone 音频单元在后台录音,如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391342/

相关文章:

javascript - 如何在 Recorder.js 之外的浏览器中录制音频文件

iphone - UISwipeGestureRecognizer 在 iOS 4.3 中不起作用

TableView 单元格项的 iOS 不同 View

iphone - 在包含 AudioToolbox 框架的 Objective-C iOS 项目中找不到 AudioServices.h

ios - AudioToolBox Recorder 受到 AVFoundation AudioPlayer 的影响

ios - 如何在 iOS 中录制音频并将其作为 NSData 获取?

javascript - 通过 HTML 和 Javascript 进行音频流和录音

iphone - 在我的应用程序中实现 iPhone 相机中的 Flash 按钮动画?

audio - 从音频文件中删除回声的最佳方法是什么?

ios - iOS Audio Calling APP使用Circular Buffer的原因是什么?