AVP图层与AVPlayer图层'ready to play'状态对真实视频不起作用查看显示



我有一个带远程视频源的AVPlayer。使用CCD_ 1来检测CCD_。

问题是:在触发CCD_ 3状态之后。对于屏幕上真实显示的视频,它会延迟1-2秒。

我试过在readyToPlay状态打开之前和之后设置AVPlayerLayer。但都不起作用。

该问题仅在我使用CCD_ 5时发生。使用CCD_ 6是可以的。但我仍然需要在我的项目中解决这个问题。

谢谢你的建议!

     @property (weak, nonatomic) IBOutlet UIView *myVideoContainter;
     @property AVPlayer *player;
     @property AVPlayerLayer *layer;
-(void)viewDidLoad{
     self.player = [AVPlayer playerWithUR:videoURL];
     [self.player addObserver:self forKeyPath:@"status" options:0 context:nil];
}
- (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) {
        NSLog(@"Ready To Play");
        self.layer = [AVPlayerLayer playerLayerWithPlayer:self.player];
        self.layer.frame = self.mainContentView.bounds;
        [self.mainContentView.layer addSublayer:self.layer];
        }
    }
}

问题解决了。

不知道为什么,但player.currentItem.statusplayer.status更准确。

[self.player.currentItem addObserver:self forKeyPath:@"status" options:0 context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                change:(NSDictionary *)change context:(void *)context {
    if(self.player.currentItem.status == AVPlayerItemStatusReadyToPlay){
        //do something        
    }
}

注意。一些动作将改变CCD_ 9。应该以这种方式处理循环问题。

最新更新