这里我有,增加了视频层,以我所建立的IB UIView的方法:上述方法被调用在viewDidAppeariOS的10 - AVPlayer显示黑屏播放视频时
-(void)loadPlayer{
self.asset = [AVAsset assetWithURL:url];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:self.asset];
self.player = [AVPlayer playerWithPlayerItem:item];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
self.playerLayer.contentsGravity = AVLayerVideoGravityResizeAspect;
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
item.videoComposition = [AVVideoComposition videoCompositionWithPropertiesOfAsset:self.asset];
[self.player pause];
[self.player addObserver:self forKeyPath:@"status" options:0 context:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[self.videoLayer.layer addSublayer:self.playerLayer];
});
}
的视图控制器,所以每次当前视图控制器加载时,视频应该开始播放。
在这里,我检查了球员的状态和发挥资源,如果准备:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (object == self.player && [keyPath isEqualToString:@"status"]) {
if (self.player.status == AVPlayerStatusReadyToPlay) {
[self.player play];
}
}
}
的问题是,认为没有出现在视频开始播放,但只有音频,视频不。我得到的只是视频中的黑屏。音频播放效果很好,但由于某些原因,视频帧并不是未知的。
这只发生在iOS 10设备上,在iOS 9设备上运行时的相同代码就像魅力一样。视频按预期显示。
在AVPlayer等方面,iOS 10的AVFoundation框架中是否有任何更改?还是有什么,我在这里失踪,因为iOS 9发挥它很好。
如果有人遇到此问题,并且您已解决问题,请发布您的解决方案。这将有所帮助。
谢谢。
---- ****的解决方案---- ****
感谢您的答复!我刚刚发现,出于某种原因,在iOS 10中,viewDidLayoutSubviews
未被调用,因为它在iOS 9中。实际上,我在viewDidLayoutSubviews
方法中设置了播放器层的帧。由于它没有被调用,我无法在屏幕上看到玩家。我所做的是,在上面的loadPlayer
方法中设置播放器图层的框架。它工作正常。希望这可以帮助某人。
这是代码,我从viewDidLayoutSubviews搬到我loadPlayer方法行和它的工作:
self.playerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
我有同样的错误,但我不知道它会帮助你。道歉 –
谢谢,Matloob。我在找到我的解决方案之前尝试将其更改为属性。没有工作。请尝试我的答案,看看它是否有效。 –