0
我有一個AVPlayer與遠程視頻源。使用observeValueForKeyPath:ofObject:change:context:
來檢測readyToPlay
狀態,並將AVPlayerLayer設置爲myVideoContainerView的圖層進行顯示。AVPlayer與AVPlayerLayer'準備播放'狀態沒有工作的真正的視頻顯示屏
問題是:在readyToPlay
狀態後觸發。它會在屏幕上顯示的視頻延遲1-2秒。
我試圖在readyToPlay
狀態開啓之前和之後設置AVPlayerLayer。但其中沒有一個可行。
只有當我使用AVPlayer+AVPlayerLayer
時纔會出現此問題。使用AVPlayerViewController
是好的。但我仍然需要在我的項目中解決這個問題。
感謝您的任何建議!
@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];
}
}
}
很好。謝謝!!!! –