- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 MPMoviePlayerController(MPMPC)
将音频流式传输到应用程序中,效果非常好。只有一个异常(exception),在低网络连接期间,应用程序变得无响应。
现在我什至尝试过使用 AVPlayer
但或多或少有相同的体验。出于某种原因,我在互联网上找不到与此相关的任何问题。所以我不确定这是我的结果还是 MPMoviePlayerController
在低连接性期间的行为方式。
我什至尝试记录在将 URL
提供给 MPMPC
之后调用的任何函数,但没有调用任何函数。
我使用了以下三个通知来获取 MMPPC 的事件
MPMoviePlayerLoadStateDidChangeNotification
MPMoviePlayerPlaybackDidFinishNotification
MPMoviePlayerPlaybackStateDidChangeNotification
最佳答案
一旦可用网络带宽变得太低而无法保持正常播放,MPMoviePlayerController
将触发 MPMoviePlayerLoadStateDidChangeNotification
并且 loadState
将具有 MPMovieLoadStateStalled
设置。
然后您可以在您的通知处理程序中屏蔽加载状态,并运行您的应用为此状态所需的任何操作:
if ((movieController_.loadState & MPMovieLoadStateStalled) == MPMovieLoadStateStalled)
{
NSLog(@"playback stalled - make sure we don't block now!");
}
播放器恢复后,将再次触发 MPMoviePlayerLoadStateDidChangeNotification
并且 loadState
属性将为 MPMovieLoadStatePlaythroughOK
设置位:
if ((movieController_.loadState & MPMovieLoadStatePlaythroughOK) == MPMovieLoadStatePlaythroughOK)
{
NSLog(@"playback should run uninterrupted from now on.");
}
但是,我从未遇到过由 MPMovieLoadStateStalled
状态导致我的应用程序界面变慢的情况。我会说那一定是你的代码表现得很奇怪,它不是我所知道的 MPMoviePlayerController
。此外,这些通知总是会发送,我从未遇到过它们未被正确触发的情况。
我只能建议在最小的测试用例中重现此问题,然后从那个测试用例逐步解决您的应用(可能从测试用例和您的应用两方面)。
为了模拟带宽故障,我建议使用 Charles proxy .
关于ios - MPMoviePlayerController 阻塞主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797546/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!