2

我必须在我的应用程序中播放一系列视频。我正在使用 AVQueuePlayer 使用代码播放视频:

AVQueuePlayer *queuePlayer = [[AVQueuePlayer alloc] initWithItems:items];
AVPlayerLayer *myPlayerLayer  = [AVPlayerLayer playerLayerWithPlayer:queuePlayer];
myPlayerLayer.frame = CGRectMake(0, 0, 320, 350);
[self.view.layer addSublayer:myPlayerLayer];
[self.queuePlayer play];

我面临两个问题。

  1. 播放视频时,播放器的帧不符合给定的值(即0、0、320、350)。

  2. 当我们使用 MPMediaPlayer 播放视频时,不会显示任何控制按钮(音量、播放、停止、前进等)。我在这两种情况下都遗漏了什么吗?(我是第一次使用 AVFoundation,所以这些问题可能看起来很愚蠢)。

提前致谢。

4

2 回答 2

1

播放视频时,播放器的帧不符合给定的值(即0、0、320、350)。

Apple 的示例代码没有使用 -playerLayerWithPlayer:。它创建了一个 UIView 子类,其层是 AVPlayerLayer。也许这是有原因的。我在我的代码中这样做并且效果很好。查看 AVPlayerDemo 代码并尝试这样做。

当我们使用 MPMediaPlayer 播放视频时,不会显示任何控制按钮(音量、播放、停止、前进等)。我在这两种情况下都遗漏了什么吗?(我是第一次使用 AVFoundation,所以这些问题可能看起来很愚蠢)。

AVPlayer 不为您提供这些。这就是 MPMoviePlayerController 的用途。如果您想要控件并且想要使用 AVPlayer,则需要自己创建和管理控件。

于 2013-03-24T18:13:33.390 回答
1

作为戴夫对您第一个问题的回答的替代方案...

如果使用自动布局,您可以将播放器层的引用存储为本地属性,playerLayerWithPlayer:并在视图控制器的视图布置其子视图时更新其框架 -

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    self.playerLayer.frame = self.view.layer.bounds;
}

或者,如果您正在使用 UIView 子类 -

- (void)layoutSubviews
{
    [super layoutSubviews];

    self.playerLayer.frame = self.layer.bounds;
}

这假设您希望玩家填充视图;如果您有其他意图,您可以更新代码。

于 2014-10-20T15:44:57.577 回答