2012-10-17 72 views
2

我必須在我的應用程序中播放一系列視頻。我正在使用AVQueuePlayer播放視頻使用代碼:AVPlayer和框架中的控制按鈕

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,所以這些問題可能看起來很愚蠢)。

在此先感謝。

回答

1

當視頻播放時,播放器的幀不符合給定值(即0,0,320,350)的 。

Apple的示例代碼不使用-playerLayerWithPlayer :.它創建一個UIView子類,其圖層是一個AVPlayerLayer。也許這是有原因的。我在我的代碼中做到了這一點,它效果很好。看看AVPlayerDemo代碼,並嘗試這樣做。

沒有控制按鈕(音量,播放,停止,前進等)被表現爲 當我們播放視頻與MPMediaPlayer他們顯示。我是否缺少 這兩種情況? (我第一次使用AVFoundation ,所以這些問題可能看起來很愚蠢)。

AVPlayer不提供這些給你。這就是MPMoviePlayerController的用途。如果您想要控件並且想要使用AVPlayer,則需要自己創建和管理控件。

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

這假定你希望玩家填充視圖;如果您有其他意圖,您可以更新代碼。