从后台播放音频时出错。音频队列错误 12985 [重复]
Posted
技术标签:
【中文标题】从后台播放音频时出错。音频队列错误 12985 [重复]【英文标题】:Error playing Audio from background. AudioQueue Error 12985 [duplicate] 【发布时间】:2012-09-13 05:49:22 【问题描述】:可能重复:AudioQueueStart fail -12985
之前有人问过once,但我尝试实施建议的答案之一(没有被接受)并且没有得到任何运气。
我应该提到我已经在 pList 中设置了正确的背景模式。
基本上,我正在尝试在 didEnterRegion 中播放声音。这是我的代码:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
NSLog(@"MapViewController - didEnterRegion");
NSLog(@"MVC - didEnterRegion - region.radius = %f", region.radius);
// code to get the url (removed for simplicity)
AVAudiosession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
self.regionPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
NSLog(@"self.regionPlayer.url = %@",self.regionPlayer.url);
[self.regionPlayer play];
网址没问题,因为它会在前台播放。在控制台日志中似乎也可以:
Sep 12 22:33:47 unknown MLTM[4995] <Warning>: MVC - didEnterRegion - region.radius = 250.000000
Sep 12 22:33:47 unknown MLTM[4995] <Warning>: url = file://localhost/var/mobile/Applications/EFD6A583-5685-4D7C-BF8E-C8CFEA9E0D03/MLTM.app/party%20mix%207.caf
Sep 12 22:33:47 unknown MLTM[4995] <Warning>: self.regionPlayer.url = file://localhost/var/mobile/Applications/EFD6A583-5685-4D7C-BF8E-C8CFEA9E0D03/MLTM.app/party%20mix%207.caf
Sep 12 22:33:48 unknown Console[4179] <Notice>: TestFlight: Team Token is recognized
Sep 12 22:33:48 unknown mediaserverd[44] <Error>: 22:33:48.087 <AudioQueueServer> AudioQueue: Error -12985 from AudioSessionSetClientPlayState(4995)
我假设最后一行是尝试播放音频时给出的错误。
有什么想法吗?
【问题讨论】:
我看到我们两个问题之间的相似之处,但我建议它们不是完全重复的。他正在使用 AudioQueue 缓冲区,而我没有。有时有不止一种方法可以做同样的事情,不是吗? 我也看到了一个,但它不仅不清楚而且措辞不佳,而且没有公认的答案。 提及与您的问题相似的先前问题是一个好的开始,但您确实应该在您的帖子中清楚明确地说明它们没有帮助的原因。 “没有得到任何运气”并不是一个很好的描述。 “那里的解决方案是使用我无法使用的 X 库,因为 Y。” “该代码不适用,因为我没有使用 AudioQueue。” “我在那个问题中使用了代码,但我的电脑着火了”如果您在解释或实施另一个问题的解决方案时特别有困难,那么只要您具体而详细,就可以提出这个问题。 【参考方案1】:添加这个:
register **UIBackgroundModes** in info.plist for background playing
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
参考play-mp3-files-with-iphone-sdk链接
【讨论】:
我试过了,但没用。我得到了同样的错误。出于好奇,为什么要设置委托?我应该实现什么委托协议?以上是关于从后台播放音频时出错。音频队列错误 12985 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Ubuntu 上通过 PulseAudio 从 Java 播放音频文件时出错