Автоматически ли AVPlayer настраивается при воспроизведении плейлиста m3u8?

Потратив некоторое время на настройку процесса перекодирования в AWS, я обнаружил, что время загрузки видео не уменьшилось, как ожидалось, с помощью HLS (m3u8).

Кажется, что если я использую AVPlayer напрямую, без AVPlayerViewController, мне может понадобиться самому управлять качеством видеопотока? Насколько я понимаю, если бы у меня был m3u8, все делалось бы автоматически и использовалось бы наилучшее качество в зависимости от условий сети/устройства/и т. д.?

Пока кажется, что время загрузки такое же, если не чуть хуже, чем без m3u8, если использовать AVPlayer как есть.

Чтобы лучше понять, что происходит, я попробовал несколько вещей.

1) Хотя это помогло сократить время загрузки, я бы предпочел сделать немного больше, чем просто полностью уменьшить его, когда не на wfifi:

self.player?.currentItem?.preferredPeakBitRate = 1

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

2) Кроме того, не повезло с (вызывает бесконечный счетчик, даже с предпочтительным пикбитрейтом, установленным на 1):

self.player.automaticallyWaitsToMinimizeStalling = false

3) Я открыт для использования сторонней библиотеки, которая могла бы справиться с этим, нашел что-то под названием VKVideoPlayer, которое может сделать что-то из этого?

Спасибо


person JasonAddFour    schedule 26.09.2017    source источник


Ответы (1)


Теперь это возможно в iOS8 и новее.

Ниже скопировано из документации Apple:

Желаемый предел потребления пропускной способности сети для этого элемента в битах в секунду. SWIFT: var предпочитаемыйPeakBitRate: Double OBJECTIVE-C: @property(nonatomic) double предпочтительнееPeakBitRate

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

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

person casillas    schedule 26.09.2017
comment
Привет, да, хотя я уже использую эту переменную, я все еще не уверен, как получить значение битрейта (поэтому проверяю, какой на самом деле используется фактический битрейт). - person JasonAddFour; 27.09.2017