2011-10-20 9 views
9

Estoy tratando de hacer que un reproductor HLS simple controle la reproducción y se muestre en un monitor secundario. Estoy usando AVFoundation en 10.7 para controlar la reproducción. Puedo crear con éxito el AVPlayerItem y el AVPlayer, pero estoy teniendo problemas para que el video se muestre dentro de un NSView.No se puede obtener AVPlayerLayer para mostrar video en NSView

Debo confesar que soy un principiante de Cocoa, y provengo del desarrollo de iOS, por lo que me puede estar perdiendo algo simple. Sin embargo, he pasado de 4 a 5 horas tratando de hacer que esto funcione, y no he tenido éxito.

Cuando reproduzco el video desde el AVPlayer, la reproducción comienza y puedo escuchar el audio. Sin embargo, no se muestra ningún video.

He tratado de hacerlo lo más simple posible. Tengo un NSViewController, donde agrego una capa de AVPlayerLayer a su vista:

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

Por lo que yo sé, eso es todo lo que tengo que hacer. Sin embargo, el video nunca aparece dentro de la vista.

¿Alguien ha tenido éxito al agregar un AVPlayerLayer a un NSView? La documentación de AVFoundation muestra cómo se puede hacer esto con UIView, y también he probado ese método sin tener suerte en NSView.

¡Cualquier ayuda sería muy apreciada!

Respuesta

12

Intente enviar setWantsLayer: SÍ a su vista antes de agregar la subcapa.

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

Eso fue todo. La AVFoundation documenta cómo configurar esto en iOS subclasificando un UIView. Sin embargo, NSView no tiene layerClass, que es una razón por la que no funcionaba en mi extremo. Así que subclasé de una manera diferente, y me aseguré de agregar el setWantsLayer, ¡y parece funcionar muy bien! – kcharwood

+4

En iOS, no parece que haya un atributo/método de "quierecapado" – zakdances

+1

Quiero decir en iOS6. – zakdances

Cuestiones relacionadas