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

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 に答える