AVPlayer 导致模拟器崩溃但在设备上运行良好

Posted

技术标签:

【中文标题】AVPlayer 导致模拟器崩溃但在设备上运行良好【英文标题】:AVPlayer causes Simulator to crash but runs fine on device 【发布时间】:2014-11-06 06:03:32 【问题描述】:

我搜索了整个互联网,但没有发现有关此错误的信息。

我正在使用 AVPlayer 播放来自远程或本地 URL 的流音频。 但是,虽然在我的设备上运行良好,但在模拟器上却崩溃了。

我发现播放器的创建进行得很好,但是一旦我调用 [playerInstance play] 应用程序就会崩溃。

错误发生在 CommonURLAssetNotificationQueue 中的某处。 而且异常断点指向0x10e8a2519: pushq %rbp,一点用都没有。

但是,在设备上它可以正常工作。

那么,这是我的错误,我必须修复代码吗?还是只是模拟器表现不正常?

【问题讨论】:

我也一直在模拟器上用 AVPlayer 播放文件时遇到问题。我认为这是模拟器的问题。在实际设备上从来没有遇到过问题。 当您说流式音频时,您是指 HLS,而不是位于远程服务器上的音频文件? 我想我的意思是从远程服务器上的音频文件流式传输。 奇怪的是,在禁用并重新启用自动布局后,问题就没有了。 问题再次浮出水面。很奇怪,它发生在我为情节提要添加约束之后。 【参考方案1】:

您很可能启用了异常断点。 AVPlayer 中的 play 方法通常会抛出异常,即使没有任何问题。该异常不会使应用程序崩溃,然后应用程序会继续完全按照您的意愿运行。但是,如果您启用了异常断点,Xcode 会注意到异常并使应用程序崩溃。如果您进入左侧边栏并禁用异常断点,应用程序将运行而不会崩溃。

【讨论】:

你是对的!禁用断点后,我终于可以在模拟器中测试音乐播放了。谢谢!这是开始我的一天的最佳方式。 哇...苹果干得好。 AVPlayer 总是抛出异常?这是一些甜蜜的技术。 老兄,你太棒了;) 这可要了我的命,只是从来没有用谷歌搜索过正确的问题!感谢您的回答。【参考方案2】:

将异常全部更改为 Objective C。

【讨论】:

【参考方案3】:

我的解决方法是在应用的信息页面中添加“使用说明”。因为 AVPlayer Demo App 试图在未经许可的情况下使用本地照片库,这会导致 demo 应用程序崩溃。添加‘Privacy — Photo Library Usage Description’后,我就可以成功运行这个demo app了。

【讨论】:

以上是关于AVPlayer 导致模拟器崩溃但在设备上运行良好的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在模拟器上运行良好,但在真实设备上崩溃

迅速。在模拟器上播放良好的 mp3 文件,但在设备上播放时没有音量。 AVPlayer

React-Native 应用程序在 android 设备上立即崩溃,但在模拟器上运行良好

应用程序在模拟器上运行良好,但在设备上崩溃:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__ae

BB 10 App 在设备中崩溃,但在模拟器中运行良好

IOs App 在模拟器上运行但在设备上崩溃(主要使用 AVFoundation)