2015-09-29 6 views
18

Я играю видео на tvOS, используя следующий код:AVPlayer ошибка во время игры на 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]; 

Но я получаю следующую ошибку

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

Любые идеи, как это исправить ?

ответ

19

Вы используете приложение в симуляторе или наборе для Apple TV?

Для tvOS большинство ошибок/сбоев AV, с которыми я столкнулся, возникают только тогда, когда я использую симулятор Apple TV. Когда я запускаю приложение на физическом устройстве, они, как правило, исчезают.

+0

Да, я запускаю его на симуляторе. Я думал, что так может быть. К сожалению, у меня пока нет Applet TV, чтобы проверить его. В любом случае спасибо. – Wojtek

+2

Имела ту же ошибку в симуляторе, отлично работает на устройстве. – tagy22

+0

@Wojtek Вы видели мой ответ? Я получил код, отлично работающий в симуляторе. – ABeanSits

4

Я получаю видео для загрузки и воспроизведения локально на симуляторе. Я написал его в Swift, но вы должны легко его перевести.

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

Убедитесь fileUrl не nil есть и попробуйте удалить код, который не нужен (например, уведомления-части), таким образом, мы можем сделать вывод, какая часть не удается.

Я использую Xcode 7.1beta3.

1

Вы не хотите подкласс AVPlayerViewController. От the docs:

IMPORTANT

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

Вместо этого используйте обычный UIViewController, а затем прикрепить мнение AVPlayerViewController к нему.

Использование кода @ AbeanSits (я использую RubyMotion, но вы можете перевести его на Obj-C). Вот моя версия:

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 
Смежные вопросы