【问题标题】:Objective-C How to play videos on MPMoviePlayerController or AVPlayer instantly, without delay?Objective-C 如何立即在 MPMoviePlayerController 或 AVPlayer 上播放视频,没有延迟?
【发布时间】:2015-04-06 00:30:35
【问题描述】:

我曾尝试在 AVPlayer 和 MPMoviePlayerController 上播放 500 KB 的视频,但它们都有一些令人讨厌的延迟。 AVPlayer 和 MPMoviePlayerController 都显示黑屏 2-3 秒,然后开始播放视频。好烦啊,怎么这么长的视频才开始?我该如何解决?

 //Movie Player Code
_moviePlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:video];
    _moviePlayerVC.moviePlayer.view.userInteractionEnabled = YES;
    _moviePlayerVC.moviePlayer.view.multipleTouchEnabled = YES;
    _moviePlayerVC.moviePlayer.repeatMode = MPMovieRepeatModeOne;
    _moviePlayerVC.moviePlayer.controlStyle = MPMovieControlStyleNone;
    _moviePlayerVC.moviePlayer.scalingMode = MPMovieScalingModeFill;
    _moviePlayerVC.moviePlayer.view.frame = self.frame;
    [_moviePlayerVC.moviePlayer setShouldAutoplay:YES];
    _moviePlayerVC.view.frame = self.frame;

    [self addSubview:_moviePlayerVC.view];

//AVPlayer Code
AVAsset *asset = [AVAsset assetWithURL:video];
    AVPlayerItem *item = [[AVPlayerItem alloc] initWithAsset:asset];
    _player = [[AVPlayer alloc] initWithPlayerItem:item];
    _player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:_player];
    layer.frame = self.frame;
    layer.backgroundColor = [UIColor clearColor].CGColor;
    [layer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

【问题讨论】:

  • 尝试了您的 AVPlayer 代码,但屏幕上没有出现任何内容。您的代码中是否缺少 addsubview 或类似语句?

标签: ios objective-c video mpmovieplayercontroller avplayer


【解决方案1】:

您可以预加载一个AVPlayer 并观察它的status。一旦它改变了AVPlayerStatusReadyToPlay,您应该能够毫无延迟地开始播放。

【讨论】:

  • 它仍然不起作用,由于某种原因仍然存在延迟。就像音频甚至在视频显示之前就开始了。 PS预加载AVPlayer是什么意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 2023-03-06
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多