objective-c avplayer tvos avplayerlayer

objective c - Error de AVPlayer mientras juegas en tvOS



objective-c avplayerlayer (3)

¿Está ejecutando la aplicación en el simulador o en el kit de desarrollo de Apple TV?

Para tvOS, la mayoría de los errores / fallas relacionados con AV que he encontrado solo ocurren cuando estoy usando el simulador de Apple TV: una vez que ejecuto la aplicación en el dispositivo físico, tienden a desaparecer.

Estoy reproduciendo un video en tvOS usando el siguiente código:

NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mov"]; NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; self.player = [AVPlayer playerWithURL:fileUrl]; AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; avPlayerLayer.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height); [view.layer addSublayer:avPlayerLayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(replayMovie:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil]; [self.player play];

Pero estoy recibiendo el siguiente error

ERROR:> aqme> 718: MEMixerChannel :: EnableProcessor: no se pudo abrir el tipo de procesador 0x705f6571

¿Alguna idea para solucionarlo?


Estoy obteniendo un video para cargar y reproducir localmente en el simulador. Lo escribí en Swift pero deberías poder traducirlo con bastante facilidad.

if let path = NSBundle.mainBundle().pathForResource("4", ofType:"mp4") { let url = NSURL(fileURLWithPath: path) let videoPlayer = AVPlayer(URL: url) let playerLayer = AVPlayerLayer(player: videoPlayer) playerLayer.frame = self.view.frame self.view.layer.addSublayer(playerLayer) videoPlayer.play() }

Asegúrese de que fileUrl no sea nil e intente eliminar el código que no es necesario (como la parte de notificación) para poder deducir qué parte está fallando.

Estoy usando Xcode 7.1beta3.


No desea subclase AVPlayerViewController. De los documentos :

IMPORTANTE

No subclase AVPlayerViewController. La anulación de los métodos de esta clase no es compatible y da como resultado un comportamiento indefinido.

En su lugar, utilice un UIViewController normal y luego adjunte la vista de AVPlayerViewController a él.

Usando el código de @ AbeanSits (estoy usando RubyMotion, pero puedes traducirlo a Obj-C) funcionó. Aquí está mi versión:

def viewDidAppear(_) super @player_controller = AVPlayerViewController.alloc.init @player_controller.player = AVPlayer.alloc.initWithURL(current_url) self.addChildViewController(@player_controller) self.view.addSubview(@player_controller.view) @player_controller.view.frame = self.view.frame @player_controller.player.play end