2013-05-28 63 views
14

我從MPMoviePlayerController切換到AVPlayer,因爲我需要更細緻地控制視頻交換。 .mov文件我玩MPMoviePlayerController播放良好,但切換到AVPlayer後,我聽到視頻的音頻,但視頻只顯示了我添加了AVPlayerLayer的視圖背景。以下是我如何初始化AVPlayerAVPlayer視頻空白但聽到聲音

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; 

回答

7

發現這是使用AutoLayout的結果。在viewDidLoad中,self.playerContainer.boundsCGRectZero

我必須分配viewDidAppear中的playerLayer幀來匹配playerContainer。

+1

我不使用自動佈局,但有同樣的問題。 http://stackoverflow.com/questions/16872193/avqueueplayer-shows-black-screen-when-called-from-app-delegate你怎麼能解決它? – Burak

+0

對我來說,視頻是CGRectZero,不可見。它實際上只是在0.0x0.0的屏幕上播放。 –

+0

@Gary我有完全相同的問題,但與MacOS項目 - 我聽到的聲音,但沒有視頻只是黑色的窗口 - 這裏是我的總代碼:'let fileURL = URL(string:「http://commondatastorage.googleapis.com/gtv - 視頻桶/樣品/ BigBuckBunny.mp4" ) 讓avAsset = AVURLAsset(URL:fileURL!選項:無) 讓playerItem = AVPlayerItem(資產:avAsset) 錄像機= AVPlayer(playerItem:playerItem) 讓playerView = self.playerView playerView?.player = videoPlayer videoPlayer.play()'任何想法我需要添加到這個讓視頻顯示? –

1

由於我們使用AVPlayerLayer(的CALayer的子類),我們需要設置框架

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 

    self.avPlayerLayer.frame = self.movieContainerView.bounds; 
} 
0

請確保您在播放視頻的聲明:

[self.player play] 

從主調度調用像這樣的隊列(Swift 3):

DispatchQueue.main.async { 
    self.player.play() 
} 
+0

抱歉,它並沒有幫助我。 –

相關問題