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];

私は2つの問題に直面しています。

  1. ビデオが再生されると、プレーヤーのフレームは指定された値 (つまり、0、0、320、350) に従っていません。

  2. MPMediaPlayer でビデオを再生するときに表示されるコントロール ボタン (音量、再生、停止、進むなど) は表示されません。両方のケースで何か不足していますか? (私は初めて AVFoundation を使用しているので、これらの質問はばかげているように思えるかもしれません)。

前もって感謝します。

4

2 に答える 2

1

最初の質問に対する Dave の回答に代わるものとして...

自動レイアウトを使用している場合は、返されたプレーヤーのレイヤーへの参照をローカル プロパティとして保存し、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 に答える
1

ビデオが再生されると、プレーヤーのフレームは指定された値 (つまり、0、0、320、350) に従っていません。

Apple のサンプル コードでは、-playerLayerWithPlayer: を使用していません。レイヤーが AVPlayerLayer である UIView サブクラスを作成します。それには理由があるのか​​もしれません。私は自分のコードでそれを行い、うまく機能します。AVPlayerDemo コードを見て、そのようにしてみてください。

MPMediaPlayer でビデオを再生するときに表示されるコントロール ボタン (音量、再生、停止、進むなど) は表示されません。両方のケースで何か不足していますか? (私は初めて AVFoundation を使用しているので、これらの質問はばかげているように思えるかもしれません)。

AVPlayer はこれらを提供しません。それが MPMoviePlayerController の目的です。コントロールが必要で、AVPlayer を使用したい場合は、自分でコントロールを作成して管理する必要があります。

于 2013-03-24T18:13:33.390 に答える