【问题标题】:MPMoviePlayerController: Removing ±1sec black screen, when changing contentURL?MPMoviePlayerController:更改 contentURL 时移除 ±1 秒黑屏?
【发布时间】:2010-11-30 13:36:03
【问题描述】:

我正在做一个 iPad 项目,我必须一个接一个流畅地播放短视频文件。为了播放我正在使用的视频MPMoviePlayerController。我面临的问题是当我打电话时

[self.moviePlayer setContentURL:videoURL]

它确实开始播放下一个视频,但在开始播放下一个视频之前有 ±1 秒的黑屏延迟(视频是从磁盘读取的,而不是流式传输的)。我需要避免这个黑屏以及延迟。

所以也许你们中的一些人也遇到过这个问题并有一些解决方案?谢谢。

顺便说一句,就目前而言,为了至少避免黑屏,我捕获了结束视频的最后一帧,将其显示在 UIImageView 中,并在延迟 1 秒后将其删除。但我希望能找到更优雅的解决方法。

【问题讨论】:

  • 我遇到了同样的问题,想知道这个问题的正确解决方案。
  • 似乎在电影开始播放时 alpha 淡入,而在电影结束时 alpha 淡出,是 MPMoviePlayerController 的默认行为。如果有人设法推翻这一点,这对我来说将是一个巨大的消息。

标签: ipad mpmovieplayercontroller


【解决方案1】:

您所说的效果实际上是两个问题的组合:更改视频时的黑色闪烁(第一次分配视频时不会发生)和控制器开始播放视频之前的延迟。

我目前被第二个搞砸了,还不知道如何解决。至于第一个,只是尝试使用 MPMoviePlayerController 的另一个实例。我的意思是当视频播放完毕(您可以订阅相应的通知)时,只需删除旧播放器,创建一个新播放器并将视频放在那里。这样可以避免闪烁,但在下一个视频开始播放之前会有延迟(不确定,因为加载视频或创建播放器)。

希望这会有所帮助。

【讨论】:

  • 嘿,我正在做的项目已经结束了,我们让视频延迟了。无论如何,我记得尝试过像你这样的解决方案,但我认为它没有修复某些 iOS 设备上的黑屏。无论如何,它适用于某些设备。
【解决方案2】:

在这里找到解决方案 http://joris.kluivers.nl/blog/2010/01/04/mpmovieplayercontroller-handle-with-care/ 您需要使用 [self.moviePlayer prepareToPlay]; 并捕获 MPMoviePlayerReadyForDisplayDidChangeNotification 才能使用 [self.moviePlayer play];

【讨论】:

  • 虽然页面可能会失效,但请将链接网站的相关部分放入您的答案中。
【解决方案3】:

旧帖,但 Google 员工仍会来。 :)

创建一个新的MPMoviePlayerController 然后将其分配给我以前的播放器对我有用,不再黑屏!

    ...
    [self playVideoWithFilename:@"video1.mp4"];
}

- (void)playVideoWithFilename:(NSString *)fileName
{
    MPMoviePlayerController *player = [MPMoviePlayerController new];
    _myVidPlayer = player;
    player = nil;

    NSURL *vidPath = [[NSBundle mainBundle] URLForResource:fileName withExtension:nil];

    [_myVidPlayer.view setBackgroundColor:[UIColor whiteColor]];
    [_myVidPlayer.view setFrame:CGRectMake(0, 64, 320, 320)];
    [_myVidPlayer setContentURL:vidPath];
    [_myVidPlayer setControlStyle:MPMovieControlStyleNone];
    [_myVidPlayer setRepeatMode:MPMovieRepeatModeOne];
    [_myVidPlayer prepareToPlay];
    [self.view addSubview: _myVidPlayer.view];
    [_myVidPlayer play];
}

注意:

适用于 iOS 2.0 及更高版本 在 iOS 9.0 中已弃用

“在 AVKit 中使用 AVPlayerViewController。”

【讨论】:

    【解决方案4】:

    我认为问题在于控制器会在电影之间淡出并重新出现。 您可以控制背景视图的颜色和内容,但我不确定您是否可以消除淡入/淡出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多