在tvOS上播放时出现AVPlayer错误

时间:2015-09-29 12:56:17

标签: objective-c avplayer tvos avplayerlayer

我正在使用以下代码在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];

但是我收到以下错误

  

错误:> aqme> 718:MEMixerChannel :: EnableProcessor:无法打开   处理器类型0x705f6571

任何想法如何解决?

3 个答案:

答案 0 :(得分:21)

您是在模拟器中还是在Apple TV开发套件中运行应用程序?

对于tvOS,我遇到的大多数与AV相关的错误/崩溃只发生在我使用Apple TV模拟器时 - 一旦我在物理设备上运行应用程序,它们就会消失。

答案 1 :(得分: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。

答案 2 :(得分:1)

您不希望继承AVPlayerViewController。来自the docs

  

重要

     

不要继承AVPlayerViewController。覆盖这个类   方法不受支持,导致未定义的行为。

相反,使用常规的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