【问题标题】:MPMoviePlayer standard interface play/pause status reflection issueMPMoviePlayer 标准界面播放/暂停状态反射问题
【发布时间】:2011-11-22 15:45:48
【问题描述】:

我的一个组件大量使用了 MPMoviePlayerController,最近出现了一个奇怪的错误;当使用标准用户界面时(例如MPMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen;播放器永远不会改变播放/暂停按钮的状态(我截图中间的那个东西)。

功能保持不变,但用户界面不反映播放器状态。

在播放电影时通过点击屏幕调出控件时,我看到一个播放符号。我期望的是播放器当前正在播放的暂停符号。当点击播放符号时,播放器进入暂停模式。然而,符号并没有改变。当再次点击该播放符号时,播放器将继续播放,正如预期的那样。

该问题已在 iOS5 中引入,在之前的 iOS 版本中未出现。

为了验证 iOS5 问题,我创建了一个没有使用我自己的框架的简约播放器,并且果然没有发生问题,因此它一定是我的代码触发了这个怪癖。不幸的是,我的代码非常大(大约 3k 行),所以我不能在这里发布。

我知道有人能够在没有源代码的情况下回答这个问题的机会非常渺茫,因为它似乎与我的代码直接相关。像我现在一样绝望,我只是抓住机会并希望有点奇迹,有人真的遇到了这样的问题并且知道如何触发/删除它。

【问题讨论】:

    标签: iphone ios ios5 mpmovieplayercontroller


    【解决方案1】:

    好吧,看来我找到了答案(以及我所说的 iOS5 错误)...

    MPMoviePlayerController 对播放按钮的状态感到恼火的原因仅仅是我的初始化代码的顺序。

    要触发这个问题,你所要做的就是运行这段代码;

    moviePlayer = [[MPMoviePlayerController alloc] init];
    moviePlayer.shouldAutoplay = YES;
    moviePlayer.fullscreen = NO;
    moviePlayer.view.frame = self.view.bounds;
    moviePlayer.currentPlaybackTime = 0.0;
    moviePlayer.initialPlaybackTime = 0.0;
    [moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]];
    [self.view addSubview:moviePlayer.view];
    

    您将看到一个不会改变其支付/暂停状态的播放器 UI。

    为了让事情再次正常工作,您必须在设置播放时间之前移动 setContentURL 调用。

    moviePlayer = [[MPMoviePlayerController alloc] init];
    moviePlayer.shouldAutoplay = YES;
    moviePlayer.fullscreen = NO;
    moviePlayer.view.frame = self.view.bounds;
    [moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]];
    moviePlayer.currentPlaybackTime = 0.0;
    moviePlayer.initialPlaybackTime = 0.0;
    [self.view addSubview:moviePlayer.view];
    

    我确实在 Apple 提交了一个错误(Radar Bug ID# 10484668)- 会及时通知您他们的答案。

    OpenRadar Bug Report

    【讨论】:

    • 我遇到了同样的问题,它确实与 setContentPlaybackTime 函数有关
    【解决方案2】:

    我也经常看到这种行为,但不幸的是,只是将调用顺序切换到 setContentURL 并设置初始和播放时间并没有什么区别。

    我发现我做错了什么。当我应该指定零时,我将播放时间设置为 -1 以指示流的开始。更改此设置为我解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      相关资源
      最近更新 更多