我的应用程序在后台播放音乐。我在后台模式中有音频键on,我的音频会话看起来如下:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = NULL;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&err];
if( err ){
NSLog(@"There was an error creating the audio session");
}
[audioSession setMode:AVAudioSessionModeDefault error:&err];
if( err ){
NSLog(@"There was an error setting mote to the audio session");
}
[[AVAudioSession sharedInstance] setActive:YES error:&err];
if( err ){
NSLog(@"There was an error setting mote to the audio session");
}我通过AUGraph进行播放,它配置了两个节点:远程I/O和Mixer:
AudioComponentDescription outputcd;
outputcd.componentFlags = 0;
outputcd.componentFlagsMask = 0;
outputcd.componentManufacturer = kAudioUnitManufacturer_Apple;
outputcd.componentSubType = kAudioUnitSubType_RemoteIO;
outputcd.componentType = kAudioUnitType_Output;
// Multichannel mixer unit
AudioComponentDescription MixerUnitDescription;
MixerUnitDescription.componentType = kAudioUnitType_Mixer;
MixerUnitDescription.componentSubType = kAudioUnitSubType_AU3DMixerEmbedded;
MixerUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
MixerUnitDescription.componentFlags = 0;
MixerUnitDescription.componentFlagsMask = 0;另外,根据技术质量保证,我添加了
UInt32 maxFPS = 4096;
AudioUnitSetProperty(_mixerUnit, kAudioUnitProperty_MaximumFramesPerSlice,kAudioUnitScope_Global, 0, &maxFPS,sizeof(maxFPS));但是仍然没有运气,我的应用程序一直在ExtAudioFileRead上崩溃,当我锁定iPhone时,它的渲染回调函数大约有10秒。有什么建议吗?值得一提的是,这个错误没有在ios 7上复制。
发布于 2015-01-09 16:05:37
问题是应用程序功能中启用了数据保护。因此,当设备被锁定时,文件被加密,无法在后台播放。所以坠毁了。更改音频文件的加密属性可以解决此问题。
https://stackoverflow.com/questions/27692994
复制相似问题