我有一个基本的iOS应用程序,它使用AVPlayer
来播放附加了MTAudioProcessingTap
的本地文件。我添加了一个带有文本字段的UIAlertView
弹出式窗口,以允许将自定义网址添加到应用的播放列表中,但是当使用[alert show]
显示警报时,音频系统会失败。如果我在播放任何曲目之前显示警报,开始播放曲目,然后再次显示警报它工作正常 - 几乎就像第一个节目有一些CPU尖峰惩罚(虽然我在仪器上看不到任何东西)。
提醒:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Play Remote Track"
message:@"Enter the address."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Play", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
错误:
<ClientProcessingTapManager> AudioQueueProcessingTapGetSourceAudio posting message to kill mediaserverd (36078)
MTAudioProcessingTapGetSourceAudio()
会在下一个数据包268451843
上返回状态代码268435459
。更新:问题仅在调试时发生,因此事实证明它不是一个showstopper。不过,我仍然有兴趣深入了解它。
答案 0 :(得分:1)
试试这个:
#import <dispatch/dispatch.h>
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Play Remote Track"
message:@"Enter the address."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Play", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
});
如果没有帮助,请尝试查看MTAudioProcessingTap Audio Processor Sample Code。我试图在视频显示时将你的AlertView调用到不同的地方,一切都很好 - 没有错误。这是iPad模拟器v.6.1。
答案 1 :(得分:1)
只是把这个放到床上,我最终得出结论,这是一个性能问题。在我遇到的所有其他情况下,当你在AudioQueueProcessingTapGetSourceAudio posting message to kill mediaserverd (36078)
进程循环中进行“太多”工作时,似乎会调用MTAudioProcessingTap
。我认为在我的案例中显示UIAlertView
正在将设备推到边缘。
至于什么构成“太多”工作,我不知道,MTAudioProcessingTap
的头文件中的任何文档都没有提及。在我测试我的应用程序的几个设备上,我可以增加音频循环中的工作,直到整体CPU大约为20%,然后出现kill消息,并且tap停止调用它的处理回调。它必须是人为强加的限制,或者出于某种原因,无论使用多少CPU,我的进程循环都无法实现其实时保证。