播放tvOS时出现AVPlayer错误

20

我正在使用以下代码在 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: failed to open processor type 0x705f6571

有什么解决方法吗?

3个回答

24

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

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


是的,我正在模拟器上运行它。我想这可能是原因。不幸的是,我还没有Apple TV来测试它。无论如何,谢谢。 - Wojtek
@Wojtek,你看到我的回答了吗?我在模拟器中成功地让代码运行了。 - ABeanSits
@ABeanSits,你看到我的问题了吗?我在那里发布了代码,你的答案就是相同的代码,只不过用Swift写的... - Wojtek

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。根据文档
重要提示
不要子类化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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接