2011-10-20 22 views
9

簡単なHLSプレーヤーを作成して、再生を制御してセカンダリモニタに表示しようとしています。 10.7でAVFoundationを使って再生をコントロールしています。 AVPlayerItemとAVPlayerを正常に作成できますが、NSView内に表示するビデオを実際に取得する際に問題が発生しています。NSViewでビデオを表示するAVPlayerLayerを取得できません

私はココアの初心者であり、iOS開発から来ていると告白しなければならないので、何か簡単なことがないかもしれません。しかし、私はこれを機能させるために4-5時間を費やしてきましたが、失敗しました。

AVPlayerからビデオを再生すると、再生が開始され、音声が聞こえます。ただし、ビデオは表示されません。

私は可能な限り簡単にしようとしました。私はそれのビューのレイヤーにAVPlayerLayerを追加NSViewControllerを、持っている:

AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 

私の知る限りでは、それは私がしなければならないすべてです。ただし、ビデオはビュー内に表示されません。

誰もNSViewにAVPlayerLayerを追加できましたか? AVFoundationのドキュメンテーションは、これをUIViewでどのように行うことができるのかを示しています。NSViewでこのメソッドを試してみました。

ご協力いただければ幸いです!

答えて

12

サブレイヤを追加する前に、setWantLayer:YESをビューに送信してみてください。

[self.view setWantsLayer:YES]; 
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 
+0

それでした。 AVFoundationのドキュメントでは、UIViewをサブクラス化することで、iOSでこれを設定する方法を示しています。しかし、NSViewにはlayerClassがありません。なぜなら、これは私の目的のために働いていなかった理由の1つです。 私は別の方法でサブクラス化し、setWantsLayerを追加するようにしました。これはうまくいくようです! – kcharwood

+4

iOSでは、「wantslayer」属性/メソッド – zakdances

+1

があるように見えません。iOS6を意味します。 – zakdances

関連する問題