AVPlayer в SKVideoNode не может воспроизводить

Я запускаю SKVideoNode с экземпляром AVPlayer. Когда я вызываю метод воспроизведения AVPlayer's, видео не воспроизводится. Но он может воспроизводиться, когда я вызываю метод воспроизведения экземпляра SKVideoNode.

Причина, по которой я должен использовать AVPlayer, а не SKVideoNode, заключается в том, что я должен отслеживать текущее время текущего видео, уведомление о статусе завершения воспроизведения. но SKVideoNode не имеет этих двух статусов свойств.

self.player = [[AVPlayer alloc] initWithURL:url];
self.videoNode = [SKVideoNode videoNodeWithAVPlayer:self.player];
//some other code are not related to this, so I omit them here

//These two observe can work
[self.player.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem];

//[self.player play]; This method doesn't make video play
[self.videoNode play];//This one does

person ronan    schedule 27.07.2015    source источник


Ответы (1)


Нет ничего плохого в том, чтобы использовать одновременно SKVideoNode и AVPlayer, чтобы обеспечить более точное управление воспроизведением. Я предполагаю, что вы используете SKVideoNode, потому что используется SpriteKit, и если вам нужно что-то помимо воспроизведения и паузы, вам также понадобится AVPlayer.

Просто обратите внимание, что даже с AVPlayer вы все еще вызываете воспроизведение и паузу на SKVideoNode.

person bkallay    schedule 18.08.2015
comment
Спасибо. Я не понимаю. Почему я должен использовать SKVideoNode для воспроизведения/паузы вместо AVPlayer? Вы можете это объяснить? - person ronan; 20.08.2015
comment
И я сделал тест, если я не запускаю SCNView, AVPlayer может управлять воспроизведением/паузой. - person ronan; 20.08.2015