AVPlayervideo空白,但听到声音

我从MPMoviePlayerController切换到AVPlayer因为我需要更好地控制video交换。 我用MPMoviePlayerController播放的.mov文件MPMoviePlayerController不错,但在切换到AVPlayer后,我听到video中的audio,但video只是显示了我添加了AVPlayerLayer的视图背景。 以下是我如何初始化AVPlayer

 self.player = [[AVPlayer alloc] initWithURL:video]; AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; playerLayer.frame = self.playerContainer.bounds; [self.playerContainer.layer addSublayer:playerLayer]; 

后来我只是发一个。

 [self.player play]; 

当video播放时,我听到audio,但看不到video。 我也尝试将zPosition设置为不幸。

 playerLayer.zPosition = 1; 

发现这是使用AutoLayout的结果。 在viewDidLoadself.playerContainer.bounds是一个CGRectZero

我必须在viewDidAppear分配playerLayer框架来匹配playerContainer。

由于我们使用AVPlayerLayer(CALayer的一个子类),我们需要设置框架

 - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.avPlayerLayer.frame = self.movieContainerView.bounds; } 

确保你播放video的声明:

 [self.player play] 

从这个主调度队列调用(Swift 3):

 DispatchQueue.main.async { self.player.play() }