Avplayer有时候只显示黑屏,但声音正常。

8

我正在使用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];

这是iOS10吗?你试过iOS10.1的beta版本吗? - Rhythmic Fistman
是的,我正在使用iOS10进行开发,还没有尝试过10.1。 - Deepak Chaudhary
@DeepakChaudhary,你找到答案了吗? - Pankaj Gupta
@PankajGupta 不完全是,但我在同一段代码中进行了一些更改,这比上一个更好:'//显示视图控制器 controller.view.frame =_imgForVidFrame.frame; [self addChildViewController:controller]; [self.view addSubview:controller.view]; [vPlayer play];' - Deepak Chaudhary
我曾经遇到过同样的问题,并在这里发帖。你是在使用本地和/或远程视频时遇到这个问题吗? - Viktor Gardart
@ViktorGardart 我正在处理本地视频,添加从URL下载的声音,然后合并视频并播放。现在它运行良好,但有时会在内存空间较低的设备上仅显示黑屏。 - Deepak Chaudhary
1个回答

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

或者你可以像这样展示AVPlayerViewController

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

框架是正确的,因为玩家出现在预期位置。我认为avplayer存在一些问题,有时它可以完美地工作。 - Deepak Chaudhary
我想要在特定的帧中播放视频,但是由于这些问题,无法设置帧。 - Deepak Chaudhary
尝试在第一个解决方案中设置所需的框架,而不是使用playerLayer.frame = self.view.bounds; - Ketan Parmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接