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:无法打开处理器类型 0x705f6571

任何想法如何解决它?

4

3 回答 3

24

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

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

于 2015-10-09T23:23:42.027 回答
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。

于 2015-10-13T23:07:39.753 回答
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
于 2015-10-15T17:25:39.847 回答