2011-10-20 64 views
9

我試圖製作一個簡單的HLS播放器來控制播放並在輔助監視器上顯示。我在10.7中使用AVFoundation來控制播放。我可以成功創建AVPlayerItem和AVPlayer,但是我在實際獲取視頻在NSView中顯示時遇到問題。無法讓AVPlayerLayer在NSView中顯示視頻

我必須承認我是一名可可新手,並且來自iOS開發,所以我可能會缺少一些簡單的東西。然而,我花了4-5個小時試圖讓這個工作,我一直沒有成功。

當我從AVPlayer播放視頻時,播放開始,我可以聽到音頻。但是,沒有視頻顯示。

我試圖讓它儘可能簡單。我有一個NSViewController,在這裏我添加AVPlayerLayer到它的視圖的層:

AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 

據我所知,這是我必須做的。但是,視頻不會出現在視圖中。

有沒有人成功添加一個AVPlayerLayer到NSView? AVFoundation文檔展示瞭如何使用UIView完成這項工作,並且我也嘗試了這種方法,並且在NSView中沒有運氣。

任何幫助將不勝感激!

回答

12

在添加子圖層之前嘗試發送setWantsLayer:YES到您的視圖。

[self.view setWantsLayer:YES]; 
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 
+0

就是這樣。 AVFoundation文檔展示瞭如何通過繼承UIView來在iOS上進行設置。但是,NSView沒有layerClass,這是它​​不能在我的最後工作的原因之一。 所以我採用了不同的方式,並確保添加setWantsLayer,並且它看起來很棒! – kcharwood

+4

在iOS上,看起來好像沒有「wantslayer」屬性/方法 – zakdances

+1

我的意思是在iOS6上。 – zakdances