小编kch*_*ood的帖子

无法让AVPlayerLayer在NSView中显示视频

我正在尝试制作一个简单的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中没有运气.

任何帮助将不胜感激!

cocoa avfoundation nsview avplayer osx-lion

10
推荐指数
1
解决办法
6976
查看次数

同时在两个视图上显示AVPlayer内容

我正在为Mac创建一个HTTP Live Streaming Client,它将控制大屏幕上的视频播放.我的目标是在主屏幕上显示控制UI,在辅助屏幕上显示全屏视频.

使用AVFoundation,我已经成功地从我的控制UI打开流并控制它的所有方面,我现在正试图在辅助屏幕上复制视频.事实证明这比我想象的更难......

在控制屏幕上,我有一个AVPlayerLayer,它显示来自AVPlayer的视频内容.我的目标是创建另一个AVPlayerLayer,并将其发送到同一个播放器,以便两个播放器在两个不同的视图中同时播放相同的视频.但是,这是行不通的.

深入挖掘,我在AVFoundation文档中发现了这一点:

您可以使用相同的AVPlayer对象创建任意数量的播放器图层.只有最近创建的播放器层才能在屏幕上实际显示视频内容.

这对我来说实际上是无用的,因为我需要在两个视图中正确显示视频.

我可以从相同的AVAsset创建一个新的AVPlayerItem实例,然后创建一个新的AVPlayer并将其添加到新的AVPlayerLayer并显示视频,但它们不再同步,因为它们是两个不同的播放器,生成两个不同的音频流播放同一个流的不同部分.

有没有人对如何将相同的AVPlayer内容分成两个不同的视图有任何建议?也许某种CALayer镜像技巧?

avfoundation calayer nsview http-live-streaming avplayer

7
推荐指数
1
解决办法
1292
查看次数