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
的结果。 在viewDidLoad
, self.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() }