2015-09-29 4 views
18

Ich spiele ein Video auf tvOS mit dem folgenden Code:AVPlayer Fehler während auf tvOS spielen

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]; 

Aber ich erhalte die folgende Störung

ERROR: >aqme> 718: MEMixerChannel::EnableProcessor: failed to open processor type 0x705f6571

Irgendwelche Ideen wie man es beheben ?

Antwort

19

Betreiben Sie die App im Simulator oder auf dem Apple TV-Entwicklungskit?

Für tvOS, die meisten AV bezogen Bugs/Abstürze habe ich nur auftreten, wenn ich den Apple TV-Simulator verwende - sobald ich die App auf dem physischen Gerät ausführen, neigen sie dazu, zu verschwinden.

+0

Ja, ich bin es auf dem Simulator ausgeführt. Ich dachte, das könnte der Fall sein. Leider habe ich Applet TV noch nicht, um es zu testen. Trotzdem danke. – Wojtek

+2

Hatte denselben Fehler im Simulator, funktioniert gut auf dem Gerät. – tagy22

+0

@Wojtek Hast du meine Antwort gesehen? Ich habe den Code im Simulator funktioniert. – ABeanSits

4

Ich bekomme ein Video zu laden und lokal auf dem Simulator zu spielen. Ich schrieb es in Swift, aber Sie sollten in der Lage sein, es ziemlich einfach zu übersetzen.

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() 
    } 

Stellen Sie sicher, fileUrl nicht nil und versuchen, Code zu entfernen, die (wie die Benachrichtigung-Teil) nicht erforderlich ist, so können wir ableiten, welcher Teil ausfällt.

Ich benutze Xcode 7.1beta3.

1

Sie möchten AVPlayerViewController nicht ableiten. Von the docs:

IMPORTANT

Do not subclass AVPlayerViewController. Overriding this class’s methods is unsupported and results in undefined behavior.

Verwenden Sie stattdessen einen regelmäßigen UIViewController, und dann die Sicht auf seinem AVPlayerViewController befestigen.

Die Verwendung von @AbeanSits Code (ich verwende RubyMotion, aber Sie können auf Obj-C übersetzen) funktionierte. Hier ist meine Version:

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 
Verwandte Themen