Не удается получить AVPlayerLayer для отображения видео в NSView - PullRequest
10 голосов
/ 20 октября 2011

Я пытаюсь сделать простой HLS-плеер для управления воспроизведением и отображением на дополнительном мониторе. Я использую AVFoundation в 10.7 для управления воспроизведением. Я могу успешно создать 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 не повезло.

Любая помощь будет принята с благодарностью!

1 Ответ

13 голосов
/ 21 октября 2011

Попробуйте отправить setWantsLayer: YES на ваш вид перед добавлением подслоя.

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