Avplayer有时显示黑屏,但声音很好

Dee*_*ary 6 ios avplayer avplayerviewcontroller

我正在使用AVPlayer和AVPlayerViewController.我在视频中添加水印后播放视频.有时它工作正常,但有时它只显示黑屏,两种情况下音频都很好.

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];
Run Code Online (Sandbox Code Playgroud)

Lio*_*ion 0

确保_imgForVidFrame.frame每次都返回正确的帧!您可以在该行上放置断点来检查它是否返回正确的大小!

你的最后一行不应该[self.view addSubview:controller.view];这样controller.view.frame =_imgForVidFrame.frame;交换!

更新 :

那么你可以做类似下面的事情AVPlayerViewController

AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:playerLayer];
[player play];
Run Code Online (Sandbox Code Playgroud)

或者你可以提出AVPlayerViewController类似的东西,

 AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath];
 AVPlayerViewController *playerViewController = [AVPlayerViewController new];
 playerViewController.player = player;
 [self presentViewController:playerViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)