AVPlayer Video Blank но слышит звук - программирование
Подтвердить что ты не робот

AVPlayer Video Blank но слышит звук

Я переключаюсь с MPMoviePlayerController на AVPlayer, так как мне нужен более тонкий контроль над обменом видео. Файл .mov, который я играл с MPMoviePlayerController, воспроизводился нормально, но после переключения на AVPlayer я слышу звук из видео, но на видео просто отображается фон представления, в который я добавил AVPlayerLayer to. Вот как я инициализирую AVPlayer.

self.player = [[AVPlayer alloc] initWithURL:video];

AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = self.playerContainer.bounds;
[self.playerContainer.layer addSublayer:playerLayer];

Затем я просто выдаю a.

[self.player play];

Когда воспроизводится видео, я слышу звук, но не вижу видео. Я также попытался установить zPosition на неудачу.

playerLayer.zPosition = 1;
4b9b3361

Ответ 1

Обнаружено, что это было результатом использования AutoLayout. В viewDidLoad self.playerContainer.bounds есть CGRectZero.

Мне пришлось назначить фрейм playerLayer в viewDidAppear, чтобы он соответствовал контейнеру игрока.

Ответ 2

Поскольку мы используем AVPlayerLayer (подкласс CALayer), нам нужно установить фрейм

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    self.avPlayerLayer.frame = self.movieContainerView.bounds;
}

Ответ 3

Убедитесь, что вы выполняете видеоролик:

[self.player play]

вызывается из основной очереди отправки (Swift 3):

DispatchQueue.main.async {
    self.player.play()
}