2016-10-07 10 views
6

我正在使用AVPlayer與AVPlayerViewController。我在視頻中添加水印後正在播放視頻。有時它工作正常,但有時它只顯示黑屏,並且音頻在兩種情況下都很好。Avplayer有時顯示黑屏,但聲音很好

vPlayer = [AVPlayer playerWithURL:_videoFilePath]; 
// create a player view controller 
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init]; 
controller.videoGravity=AVLayerVideoGravityResizeAspect; 
controller.player = vPlayer; 
[vPlayer seekToTime:kCMTimeZero]; 

// show the view controller 
[self addChildViewController:controller]; 
[vPlayer play]; 
controller.view.frame =_imgForVidFrame.frame; 
[self.view addSubview:controller.view]; 
+0

是這個iOS10?你有沒有試過iOS10.1測試版? –

+0

是的,我在iOS10上工作,沒有試過10.1 –

+0

@DeepakChaudhary你找到答案了嗎? –

回答

0

確保_imgForVidFrame.frame每次都返回正確的幀!您可以將斷點放到該行來檢查它是否返回適當的大小!

和你的最後一行應該是[self.view addSubview:controller.view];不是controller.view.frame =_imgForVidFrame.frame;所以換掉它!

更新:

,那麼你可以這樣做下面withou AVPlayerViewController

AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath]; 
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
playerLayer.frame = self.view.bounds; 
[self.view.layer addSublayer:playerLayer]; 
[player play]; 

,或者你可以提出AVPlayerViewController類似,

AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath]; 
AVPlayerViewController *playerViewController = [AVPlayerViewController new]; 
playerViewController.player = player; 
[self presentViewController:playerViewController animated:YES completion:nil]; 
+0

框架是正確的,因此玩家可以在預期位置看到。我認爲avplayer存在一些問題,有時它可以完美運行。 –

+0

我想在一個特定的框架中的視頻,但通過這些,無法設置框架 –

+0

嘗試設置您的期望幀,而不是'playerLayer.frame = self.view.bounds;'在第一個解決方案! – Lion