Потоковое видео с https с помощью AVPlayer вызывает начальную задержку - PullRequest
1 голос
/ 30 июня 2019

Я использую AVPlayer для воспроизведения видео с URL-адреса https с настройкой этого:

player = AVPlayer(url: URL(string: urlString))
player?.automaticallyWaitsToMinimizeStalling = false

Но поскольку видео немного длинное, перед тем, как видео начнет воспроизводиться, будет небольшая задержка на пустом экране. Я думаю, что это потому, что он загружается из https.

Можно ли как-нибудь устранить эту задержку, заставив AVPlayer воспроизводить видео сразу, не загружая все это?

Я добавил .automaticallyWaitsToMinimizeStalling, но это, похоже, не имеет значения.

Если у кого-то есть другие предложения, пожалуйста, дайте мне знать.

Ответы [ 4 ]

2 голосов
/ 02 июля 2019

Я не думаю, что нет ничего общего с загрузкой из https.какой у вас формат видео файла?Я думаю, что вы думаете об адаптивном поведении потоковой передачи битрейта.

https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming#Apple_HTTP_Live_Streaming

HTTP Live Streaming (HLS) - это протокол передачи потокового мультимедиа на основе HTTP, реализованный Apple Inc. как часть QuickTime X и iOS.HLS поддерживает как живое, так и видео по запросу.Он работает, разбивая потоки или видеоустройства на несколько небольших файлов MPEG2-TS (фрагменты видео) с разной скоростью передачи битов и устанавливая длительность, используя сегментатор потока или файла.Одна из таких реализаций сегментатора предоставлена ​​Apple. [29]Сегментер также отвечает за создание набора индексных файлов в формате M3U8, который действует как файл списка воспроизведения для фрагментов видео.Каждый список воспроизведения относится к заданному уровню битрейта и содержит относительные или абсолютные URL-адреса блоков с соответствующим битрейтом.Затем клиент отвечает за запрос соответствующего списка воспроизведения в зависимости от доступной пропускной способности.

Для получения дополнительной информации о HTTP Live Streaming

https://developer.apple.com/documentation/http_live_streaming

Это руководство включаетнекоторые эксперименты с версией HTTP Live Streaming и версией Non-HTTP Live Streaming.

https://www.raywenderlich.com/5191-video-streaming-tutorial-for-ios-getting-started

0 голосов
/ 05 июля 2019

В этом конкретном случае вы можете поместить UIImageView выше в представление AVPLayerlayer.

  1. Это изображение работает как альбомное / обложное изображение вашего видео, которое соответствует первому кадру вашего видео в UIActivityIndicator при просмотре.

  2. Теперь скрывайте это изображение, когда видео начнет проигрываться.

Это помогает скрыть черную рамку вашего видео, поскольку оно неизбежно обрабатывает начальное состояние буфера видео.

0 голосов
/ 05 июля 2019

Предложение:

Поскольку потоковое видео идет, мы также полагаемся на сетевое подключение.Так что для плохого сетевого соединения, у него всегда есть возможность отобразить пустой экран.

Мы можем сделать так, как мы можем получить миниатюру потокового видео на предыдущем экране с сервера или создать миниатюру со стороны приложения из потокового URL.Когда откроется экран потоковой передачи, отобразите миниатюру для пользователя с индикатором потоковой передачи, а при запуске потокового видео скрыть миниатюру.

0 голосов
/ 05 июля 2019

Вы пытались использовать AVPlayerItem's preferredForwardBufferDuration? С помощью этого свойства вы можете управлять продолжительностью буферизации AVPlayer.

player.currentItem?.preferredForwardBufferDuration = 1

Из собственной документации Apple :

Время, в течение которого проигрыватель должен буферизовать мультимедиа из сети перед точкой воспроизведения, чтобы защититься от прерывания воспроизведения.

Это свойство определяет предпочтительную длительность буфера пересылки в секундах. Если установлено значение 0, игрок выберет подходящий уровень буферизации для большинства случаев использования. Установка этого свойства в низкое значение увеличит вероятность того, что воспроизведение остановится и будет повторно буферизован, в то время как установка его в высокое значение увеличит спрос на системные ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...