• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - MPMoviePlayerController 阻塞主线程

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:45:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 MPMoviePlayerController(MPMPC) 将音频流式传输到应用程序中,并且运行良好。只有一个异常(exception),在网络连接不足的情况下,应用程序变得无响应。

现在我什至也尝试过使用 AVPlayer,但体验大致相同。由于某种原因,我在互联网上找不到与此相关的任何问题。所以我不确定这是我的结果还是 MPMoviePlayerController 在低连接性期间的行为方式。

我什至尝试记录在将 URL 提供给 MPMPC 后调用的任何函数,但没有调用任何函数。

我使用了以下三个通知来获取 MPMPC 的事件

MPMoviePlayerLoadStateDidChangeNotification
MPMoviePlayerPlaybackDidFinishNotification
MPMoviePlayerPlaybackStateDidChangeNotification



Best Answer-推荐答案


一旦可用网络带宽变得太低而无法正常播放,MPMoviePlayerController 将触发 MPMoviePlayerLoadStateDidChangeNotification 并且 loadState 将具有 MPMovieLoadStateStalled 设置。

然后,您可以在通知处理程序中屏蔽加载状态,并针对此状态运行您的应用所需的任何操作:

if ((movieController_.loadState & MPMovieLoadStateStalled) == MPMovieLoadStateStalled)
{
   NSLog(@"playback stalled - make sure we don't block now!");
}

播放器恢复后,再次触发 MPMoviePlayerLoadStateDidChangeNotification 并且 loadState 属性将设置 MPMovieLoadStatePlaythroughOK 位: p>

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap