无法让AVPlayerLayer在NSView中显示视频

kch*_*ood 10 cocoa avfoundation nsview avplayer osx-lion

我正在尝试制作一个简单的HLS播放器来控制播放并在辅助监视器上显示.我在10.7中使用AVFoundation来控制播放.我可以成功创建AVPlayerItem和AVPlayer,但我实际上遇到了在NSView中显示视频的问题.

我必须承认我是Cocoa新手,并且来自iOS开发,所以我可能会遗漏一些简单的东西.然而,我花了4-5个小时试图让它工作,我没有成功.

当我从AVPlayer播放视频时,播放开始,我可以听到音频.但是,没有视频出现.

我试图让它变得尽可能简单.我有一个NSViewController,我在其中添加了一个AVPlayerLayer的视图层:

AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
[playerLayer setFrame:self.view.bounds];
[self.view.layer addSublayer:playerLayer];
Run Code Online (Sandbox Code Playgroud)

据我所知,这就是我所要做的.但是,视频永远不会出现在视图中.

有没有人成功将AVPlayerLayer添加到NSView?AVFoundation文档显示了如何使用UIView完成此操作,并且我已经尝试过该方法,但在NSView中没有运气.

任何帮助将不胜感激!

Jef*_*uel 13

尝试在添加子图层之前向视图发送setWantsLayer:YES.

[self.view setWantsLayer:YES];
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
[playerLayer setFrame:self.view.bounds];
[self.view.layer addSublayer:playerLayer];
Run Code Online (Sandbox Code Playgroud)

  • 在iOS上,看起来不像是"wantlayer"属性/方法 (4认同)