【问题标题】:Can't get AVPlayerLayer to display video in NSView无法让 AVPlayerLayer 在 NSView 中显示视频
【发布时间】:2011-10-20 14:41:28
【问题描述】:

我正在尝试制作一个简单的 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];

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

有没有人成功地将 AVPlayerLayer 添加到 NSView 中? AVFoundation 文档展示了如何使用 UIView 完成此操作,我也尝试过该方法,但在 NSView 中没有运气。

任何帮助将不胜感激!

【问题讨论】:

    标签: cocoa avfoundation nsview osx-lion avplayer


    【解决方案1】:

    尝试在添加子图层之前将 setWantsLayer:YES 发送到您的视图。

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

    【讨论】:

    • 就是这样。 AVFoundation 文档展示了如何通过子类化 UIView 在 iOS 上进行设置。但是,NSView 没有 layerClass,这是它​​不能在我的最终工作的原因之一。所以我以不同的方式子类化,并确保添加 setWantsLayer,它似乎工作得很好!
    • 在 iOS 上,看起来没有“wantslayer”属性/方法
    • 非常感谢!!,你救了我的命。
    • 设置框架对我有用。 Xcode 无法识别setWantsLayer
    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多