关于iphone:AVPlayer视频空白但听到声音

AVPlayer Video Blank but Hear Sound

我正在从MPMoviePlayerController切换到AVPlayer,因为我需要对视频交换进行更精细的控制。我正在使用MPMoviePlayerController播放的.mov文件运行良好,但是切换到AVPlayer后,我听到了视频中的音频,但是视频只是显示了我添加了AVPlayerLayer的视图背景。这是初始化AVPlayer

的方法

1
2
3
4
5
self.player = [[AVPlayer alloc] initWithURL:video];

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

然后稍后我只发布一个。

1
[self.player play];

在播放视频时,我听到了音频,但看不到视频。我也尝试将zPosition设置为不走运。

1
playerLayer.zPosition = 1;

发现这是使用AutoLayout的结果。在viewDidLoad中,self.playerContainer.boundsCGRectZero

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


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

1
2
3
4
5
- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    self.avPlayerLayer.frame = self.movieContainerView.bounds;
}


确保您播放视频的声明:

1
[self.player play]

这样从主调度队列中调用

(Swift 3):

1
2
3
DispatchQueue.main.async {
    self.player.play()
}