15

我正在从 切换MPMoviePlayerController到 ,AVPlayer因为我需要对视频交换进行更细粒度的控制。.mov我正在播放的文件MPMoviePlayerController播放良好,但切换到后AVPlayer我听到了视频中的音频,但视频只显示了我添加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];

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

playerLayer.zPosition = 1;
4

3 回答 3

8

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

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

于 2013-05-28T23:27:13.653 回答
1

由于我们使用的是AVPlayerLayer(CALayer的子类),所以我们需要设置frame

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    self.avPlayerLayer.frame = self.movieContainerView.bounds;
}
于 2015-08-25T08:15:53.520 回答
0

确保您播放视频的语句:

[self.player play]

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

DispatchQueue.main.async {
    self.player.play()
}
于 2016-10-28T01:09:24.033 回答