Есть ли способ выбрать скорость передачи битов при использовании AVPlayer для потоковой передачи потокового видео в реальном времени?

Я использую AVPlayer для потокового аудио контента, поставляемого в двух форматах качества.

Проблема заключается в том, что при переходе от более низкого формата к более высокому (выполняемое автоматически каркасом при наличии Wi-Fi) во время воспроизведения происходит задержка.

Есть ли способ вручную выбрать желаемое качество, чтобы предотвратить эту задержку?

Ответ 1

Обновить. Прежде чем вы начнете голосовать, обратите внимание, что это был точный и принятый ответ в то время, которое было во время iOS 4. Для обновленного ответа iOS 8 см. здесь.


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

Я думаю, что это весь смысл HLS. Apple хочет, чтобы пользователи iPhone имели лучший потоковый опыт. Если они дали разработчику средства управления, чтобы настроить, какой поток используется, то это побеждает цель. Система лучше знает, когда дело доходит до переключения потоков. Если телефон не может обрабатывать дополнительную полосу пропускания, он не будет (или не должен) переключиться на более высокий поток. Некоторые вещи, которые я обнаружил, что вы можете посмотреть...

Ваши файлы разбиты на 10 секунд? Если это больше, чем вы могли бы сократить их.

Некоторые программы преобразования файлов не имеют правильных битовых скоростей, и если это так, ваш телефон может подумать, что у него есть полоса пропускания, скажем, на канал 96 кбит/с, но на самом деле ваш канал составляет 115 кбит/с. Взгляните на принятый ответ в этом сообщении: iPhone - приложение снова отклонено, HTTP Live Streaming 64 кбит/с базового канала

Ответ 2

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

Оформить заказ preferredPeakBitRate в AVPlayerItem.

После копирования из документации Apple:

Требуемый предел в битах в секунду потребления пропускной способности сети для этого элемента.
SWIFT: var preferredPeakBitRate: Двойной
OBJECTIVE-C: @property (неатомный) double preferredPeakBitRate


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


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