2011-10-20 8 views
9

Sto cercando di creare un semplice lettore HLS per controllare la riproduzione e la visualizzazione su un monitor secondario. Sto usando AVFoundation attivo in 10.7 per controllare la riproduzione. Posso creare con successo AVPlayerItem e AVPlayer, ma sto riscontrando dei problemi durante la visualizzazione del video all'interno di un NSView.Impossibile ottenere AVPlayerLayer per visualizzare video in NSView

Devo confessare che sono un debuttante di Cocoa e provengo dallo sviluppo di iOS, quindi potrei mancare qualcosa di semplice. Tuttavia ho trascorso 4-5 ore cercando di farlo funzionare, e non ho avuto successo.

Quando riproduco il video da AVPlayer, la riproduzione inizia e riesco a sentire l'audio. Tuttavia, nessun video viene visualizzato.

Ho cercato di renderlo il più semplice possibile. Ho un NSViewController, in cui aggiungo un'AVPlayerLayer a livello di esso di vista:

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

Per quanto ne so, questo è tutto quello che devo fare. Tuttavia, il video non appare mai all'interno della vista.

Qualcuno ha avuto successo aggiungendo un AVPlayerLayer a un NSView? La documentazione di AVFoundation mostra come questo può essere fatto con un UIView, e ho provato anche questo metodo senza fortuna in NSView.

Qualsiasi aiuto sarebbe molto apprezzato!

risposta

12

Provare a inviare setWantsLayer: SI alla vista prima di aggiungere il sottolivello.

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

E 'stato. I documenti di AVFoundation mostrano come configurarlo su iOS creando una sottoclasse di un UIView. Tuttavia, NSView non ha layerClass, che è una delle ragioni per cui non ha funzionato sulla mia parte. Quindi ho creato una sottoclasse in un modo diverso, e mi sono assicurato di aggiungere setWantsLayer, e sembra funzionare benissimo! – kcharwood

+4

Su iOS, non sembra che ci sia un attributo/metodo "wantlayer" – zakdances

+1

Intendo su iOS6. – zakdances

Problemi correlati