iOS 9: Использование AVPlayerViewController Swift. (перечеркнутая кнопка воспроизведения)

У меня возникли проблемы с воспроизведением видеоконтента как на устройстве iOS, так и в симуляторе.

Цель: Потоковая передача видео с онлайн-ресурса, указанного здесь: общедоступные видеопотоки с использованием hls с помощью AVPlayerViewController, просто чтобы узнать, как это работает.

Это постоянно приводило к тому, что не возникало никаких ошибок, но контроллер представления представлял мне это представление.

AvPlayerViewController

Я решил отступить и протестировать на локальном ресурсе, поэтому снял короткий снимок экрана в формате quicktime (.m4v) и сохранил его прямо в проекте. Это привело к точно такому же поведению без сообщений об ошибках.

Вот код (импортируются AVKit и AVFoundation):

var playerVC : AVPlayerViewController!
var playerItem : AVPlayerItem!
var player : AVPlayer!
var playerLayer: AVPlayerLayer!

override func viewDidAppear(animated: Bool) {

    let bundle = NSBundle.mainBundle()
    let path = bundle.pathForResource("testVideos", ofType: "m4v")
    let url = NSURL.init(string: path!)

    playerItem = AVPlayerItem.init(URL: url!)
    player = AVPlayer.init(playerItem: playerItem)
    playerVC = AVPlayerViewController.init();
    playerVC.player = player;

    self.presentViewController(playerVC, animated: true) { () -> Void in
        self.playerVC.player?.play()
    }
}

Это предупреждение при сборке на IpadMini 4: <CATransformLayer: 0x136ea1030> - changing property masksToBounds in transform-only layer, will have no effect

Xcode: версия 7.1 Таргетинг: iOS 9.0

Обновление Просто какой-то неприятный вывод ограничений из AVPlayerViewController. Я не думаю, что это способствует, но вот это:

2015-10-28 15:12:02.777 AVKitTest[4441:94545] Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые не понимаете, обратитесь к документации по свойству UIView translatesAutoresizingMaskIntoConstraints) ("", "", "", "", "", "", "", "" )


person CostelloNicho    schedule 27.10.2015    source источник
comment
В качестве обходного пути вы можете открыть и воспроизвести видео с помощью UIWebView, вызвав его URL...   -  person Dennis Weidmann    schedule 27.10.2015
comment
Ценю комментарий @Neo, но цель всего этого — узнать об AVKit и AVKitViewController.   -  person CostelloNicho    schedule 27.10.2015


Ответы (2)


Оказывается, это была какая-то глупость, просто нужно было изменить:

let url = NSURL.init(string: path!) playerItem = AVPlayerItem.init(URL: url!)

с:

let url = NSURL.init(fileURLWithPath: path!) let playerItem = AVPlayerItem.init(URL: url)

person CostelloNicho    schedule 28.10.2015
comment
Это была и моя проблема. Благодарю вас! - person James Graham; 07.06.2016
comment
T_T На поиск решения у меня ушло почти 3 часа. Большое спасибо! - person DevAndArtist; 18.08.2016

Похоже, вы неправильно настраиваете AVPlayerLayer.

Посмотрите документы для AVPlayerLayer: «Возвращает экземпляр AVPlayerLayer для отображения визуального вывода указанного AVPlayer».

пример иерархии из Руководства по программированию AVFoundation

person suite22    schedule 28.10.2015
comment
Спасибо за сообщение, вы правы на 100%, если я пытался настроить и управлять своим собственным AVplayer, но AVPlayerViewController является частью AVKit, который должен управлять всеми аспектами плеера из коробки. - person CostelloNicho; 28.10.2015