2015-09-29 20 views
18

gram wideo tvOS stosując następujący kod:błąd AVPlayer podczas gry na tvOS

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

Ale ja dostaję następujący błąd

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

jakieś pomysły jak to naprawić ?

Odpowiedz

19

Czy używasz aplikacji w symulatorze lub zestawie Apple TV dev?

W przypadku TVOS, większość błędów i usterek związanych z AV, które napotkałem, występuje tylko wtedy, gdy korzystam z symulatora Apple TV - gdy uruchomię aplikację na urządzeniu fizycznym, zwykle znikają.

+0

Tak, używam go na symulatorze. Myślałem, że tak być może. Niestety nie mam jeszcze apletu TV, aby go przetestować. W każdym razie dzięki. – Wojtek

+2

Miał ten sam błąd w symulatorze, działa poprawnie na urządzeniu. – tagy22

+0

@Wojtek Widziałeś moją odpowiedź? Mam kod działający poprawnie na symulatorze. – ABeanSits

4

Dostaję wideo do załadowania i odtworzenia lokalnie na symulatorze. Napisałem to w Swift, ale powinieneś być w stanie przetłumaczyć to dość łatwo.

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

Upewnij fileUrl nie nil jest i spróbuj usunąć kod, który nie jest potrzebne (jak powiadomień części) dzięki czemu możemy wywnioskować, która część jest wadliwa.

Używam Xcode 7.1beta3.

1

Nie chcesz podklasy AVPlayerViewController. Od the docs:

IMPORTANT

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

Zamiast tego należy użyć zwykłego UIViewController, a następnie dołączyć pogląd AVPlayerViewController do niego.

Praca przy użyciu kodu @ AbeanSits (używam RubyMotion, ale można przetłumaczyć na Obj-C). Oto moja wersja:

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