目前我正在开发一款可以从互联网上传输广播电台的应用。我看了tutorial并逐步实施了它。它工作正常一段时间,但现在我收到以下错误,应用程序不会流任何东西
2013-07-20 10:22:40.653 ShqipCom[464:c07] [MPAVController] Autoplay: Enabling autoplay
2013-07-20 10:22:40.668 ShqipCom[464:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0
2013-07-20 10:22:41.129 ShqipCom[464:c07] [MPAVController] Autoplay: Enabling autoplay
2013-07-20 10:22:41.572 ShqipCom[464:7103] <com.apple.coremedia.networkbuffering> Error '!obj' trying to fetch default input device's sample rate
2013-07-20 10:22:41.574 ShqipCom[464:7103] <com.apple.coremedia.networkbuffering> Error getting audio input device sample rate: '!obj'
2013-07-20 10:22:41.576 ShqipCom[464:7103] <com.apple.coremedia.networkbuffering> AQMEIOManager::FindIOUnit: error '!dev'
2013-07-20 10:22:41.577 ShqipCom[464:5403] <0xb0365000> AQMEIOManager::FindIOUnit: error '!dev'
(lldb)
触发播放器的IBAction看起来像这样
-(IBAction)Play:(id)sender
{
NSString *stream = @"http://www.volksmusiknet.ch/stream.m3u";
NSURL *url = [NSURL URLWithString:stream];
NSURLRequest *urlRequest = [NSUrlRequest requestWithUrl:url];
[WebView loadRequest:urlRequest];
}
也许值得一提的是,在另一个标签中,我尝试使用MPMoviePlayerController来传输电视流,这可能是播放器在某种程度上有冲突吗?
非常感谢!
花岗岩
答案 0 :(得分:4)
我在虚拟机上尝试了上述代码,结果证明VM的音频配置存在问题。在macbook上尝试了这个项目,它运行正常。
答案 1 :(得分:2)
当蓝牙音频设备连接到主机Mac(OS X 10.9.1)时,也可以在虚拟机中未运行的模拟器上触发非常类似的问题。在这种情况下,我使用AVAudioPlayer
遇到了问题。我是从Xamarin.iOS运行的,但它可能会以同样的方式影响原始的Obj-C dev。
如果我在模拟器中运行应用程序之前连接了蓝牙耳机,只要在prepareToPlay
实例上调用AVAudioPlayer
,就会发生令人讨厌的事情。
如果我首先连接蓝牙耳机,然后尝试在iOS 6模拟器中运行应用程序,我会得到与原始问题非常相似的错误,同样提及采样率和AQMEIOManager
(注意:一些堆栈跟踪是特定于Xamarin但包含在内以帮助人们诊断此问题):
<0xb0093000> Error '!obj' trying to fetch default input device's sample rate
<0xb0093000> Error getting audio input device sample rate: '!obj'
<0xb0093000> AQMEIOManager::FindIOUnit: error '!dev'
mono-rt:
Native stacktrace:
2014-02-26 09:36:08.115 SmudgesiOS[689:a07] <com.apple.main-thread> AQMEIOManager::FindIOUnit: error 'NoHW'
2014-02-26 09:36:08.115 SmudgesiOS[689:a07] <com.apple.main-thread> Prime failed (-66680); will stop (11025/0 frames)
2014-02-26 09:36:08.117 SmudgesiOS[689:a07] <com.apple.main-thread> AQMEIOManager::FindIOUnit: error 'NoHW'
2014-02-26 09:36:08.117 SmudgesiOS[689:a07] <com.apple.main-thread> Prime failed (-66680); will stop (11025/0 frames)
...
mono-rt: 4 AudioToolbox 0x00a1aa7a _ZN21UISoundRendererStructC2EP17mach_msg_header_tmPK27AudioStreamBasicDescriptionPKhmmPK28AudioStreamPacketDescriptionPKvm + 90
mono-rt: 5 AudioToolbox 0x00a1bebe UISoundNewRenderer + 94
mono-rt: 6 AudioToolbox 0x009f3239 ___ZN15AQIONodeManagerC2Ev_block_invoke_0 + 121
如果我在iOS 7模拟器中运行应用程序之前连接我的蓝牙耳机,事情会更加烦人。它挂起而不是崩溃的应用程序。 Xamarin报告了一些我猜的输出也可以在Xcode中看到。
WARNING: 128: The default output device's sample rate was changed.
WARNING: 245: Audio device's sample rate changed. You may need to restart the simulator.
WARNING: 235: Default audio device changed. Restart the simulator to have it use the newly-selected device.
重新启动iOS 7模拟器无法解决问题,它再也不会在警告再次挂起之前发出警告。
此时,我的蓝牙耳机已不再处于与问题发生前相同的状态。它们显示连接,但所有音频都非常小而且遥远。它不再控制iTunes(当连接到蓝牙时,Mavericks强制推出);如果iTunes没有运行,iTunes将比平时花费更长的时间来启动,并且似乎不会输出任何音频。到目前为止,我发现的唯一解决方案是完全重启Mac。
重启后,但保持蓝牙断开连接,模拟器将在iOS 6或iOS 7变种中运行应用程序。
注意:如果有人好奇,同一个应用程序部署到物理设备并使用相同的蓝牙耳机连接到所述设备:应用程序和音频工作正常。
答案 2 :(得分:0)
当我在El Capitan上使用Xcode 6进行开发并使用内置音频输出或HDMI输出在iOS 8.4 Simulator中运行应用程序时,我在Mac mini上收到此错误。插入有线耳机并重新启动模拟器修复了问题。