Идущие El Capitan с Xcode 7.1.1 разработки TVos 9,1/IOS 9.2Приостановка видеопотока с playerViewController на TVos
Я работает этот код под TVos ...
-(void)runVideo {
self.avPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:videoHLS]];
avPlayerItem = self.avPlayer.currentItem;
[avPlayer.currentItem addObserver:self forKeyPath:@"status" opt ons:NSKeyValueObservingOptionNew context:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:avPlayerItem];
playerViewController = [[AVPlayerViewController alloc] initWithNibName:nil bundle:nil];
playerViewController.player = avPlayer;
playerViewController.view.frame = self.view.frame;
[self addChildViewController:playerViewController];
[self.view addSubview:playerViewController.view];
[playerViewController didMoveToParentViewController:self];
}
Это работает, когда я звоните ...
dispatch_async(dispatch_get_main_queue(), ^(void) {
[playerViewController.player play];
});
Он также работает, когда я звоню ...
dispatch_async(dispatch_get_main_queue(), ^(void) {
[avPlayer play];
});
Bon, и с помощью пульта дистанционного управления он ведет себя так же, как и следовало ожидать. Но я хочу реализовать кнопку удаленного паузы в коде; который я использую bluetooth, только я не могу приостановить воспроизведение после его начала. Я пробовал все это, которые компилируются и не разбивают игрока, они ничего не делают. Лучшее, что мне удалось - это полностью убить его, едва ли пауза.
-(void)doPause {
//NSLog(@"self.playerViewController.player.rate %f",self.playerViewController.player.rate);
self.playerViewController.player.rate = 0.000000;
playerViewController.player.rate = 0.000000;
[self.playerViewController.player pause];
[self.avPlayer pause];
self.avPlayer.rate = 0.000000;
avPlayer.rate = 0.000000;
[self.avPlayer.currentItem cancelPendingSeeks];
[self.avPlayer.currentItem.asset cancelLoading];
self.playerViewController.player.rate = 0.000000;
[self.playerViewController player].rate = 0.000000;
// Это будет убить игрока и вернуть меня к родителю VC
dispatch_async(dispatch_get_main_queue(), ^(void) {
[playerViewController willMoveToParentViewController:nil];
[playerViewController.view removeFromSuperview];
[playerViewController removeFromParentViewController];
});
}
Является ли это правильный подход, или я должен делать что-то еще, чтобы добиться такого эффекта?
Да, я подтвердил это. Я просто использовал AVPlayer + AVPlayerLayer, и у меня было намного больше контроля, конечно, теперь мне нужно реализовать все элементы управления, что, очевидно, сложнее, чем вы думаете. – user3069232