
Лента роликов на iOS: опыт работы с AVPlayer
dandriyanov 11 минут назад Лента роликов на iOS: опыт работы с AVPlayer Средний 7 мин 490 Блог компании Т-Банк iOS * Разработка мобильных приложений * Кейс Привет, Хабр! На связи Дмитрий Андриянов, iOS-разработчик...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. dandriyanov 11 минут назад Лента роликов на iOS: опыт работы с AVPlayer Средний 7 мин 490 Блог компании Т-Банк iOS * Разработка мобильных приложений * Кейс Привет, Хабр! На связи Дмитрий Андриянов, iOS-разработчик команды Медиа Платформы в Т-Банке. Одна из наших ключевых задач — разработка видеоплеера для стриминговых видео, в том числе для приложения T-Инвестиций, где есть лента тематических роликов и обучающие видео в Академии.
В T-Инвестициях на iOS лента коротких роликов — это 90% трафика, именно ее оптимизации мы уделяем больше всего внимания. В первой версии пользователи могли ждать старта видео больше 15 секунд. Мы разобрались в ограничениях AVPlayer, оптимизировали буферизацию и снизили задержки на 12% в хвосте распределения.
Технические детали
Рассказываю, как мы улучшали пользовательский опыт и почему AVPlayer не лучшее решение для ленты роликов. Особенности UX в ленте коротких роликовЛента коротких роликов не просто «видео в списке». У сценария просмотра пользователем видео есть особенности, которые влияют на то, как должен работать плеер.
Посмотрим на особенности UX в ленте коротких роликов: Пользователь может быстро переходить между роликами, ожидая, что новое видео начнет воспроизводиться практически мгновенно. Пользователи часто не досматривают видео до конца, около 40% просмотров завершаются в первые три секунды. По умолчанию звук в ленте выключен и включается по тапу пользователя.
Нет настройки для смены качества — пользователь не может выбрать его вручную. Слева — лента роликов, справа — полноэкранный плеер в АкадемииПроблема долгого стартаПри запуске первой версии ленты роликов мы использовали AVPlayer, воспроизводящий видео в формате HLS (HTTP Live Streaming). Чтобы ускорить старт воспроизведения после перехода к следующему видео, мы использовали пул из трех плееров: один для воспроизведения текущего видео, второй для предзагрузки следующего и третий для возвращения к предыдущему ролику.
Отраслевые последствия
Пользователи быстро начали жаловаться на большую задержку перед стартом воспроизведения на iOS: иногда приходилось ждать более 15 секунд. Мы посмотрели аналитику и увидели, что медианное время готовности плеера составляло 750 миллисекунд, но в 10% случаев превышало 2,5 секунды, а в 1% — более 9 секунд. AVPlayer сам решает, в какой момент начинать воспроизведение, — нельзя явно указать, при каком заполнении буфера это должно происходить.
Поведение плеера регулируется свойством automaticallyWaitsToMinimizeStalling, включенным по умолчанию. Оно откладывает начало воспроизведения до тех пор, пока AVPlayer не определит, что данных в буфере достаточно для плавного воспроизведения в текущих условиях. При низкой пропускной способности сети плеер может чрезмерно долго накапливать буфер перед стартом.
На коротких роликах это иногда приводит к тому, что загружается практически всё видео, — именно это и было одной из причин долгого ожидания на слабых сетях.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





