Буферизация при обслуживании видео через AWS CloudFront
Мы размещаем видео в формате AWS S3 в формате HLS (множество файлов.ts, + плейлисты.m3u8).
Мы настроили AWS CloudFront со всеми местоположениями Edge для обслуживания этих файлов.
У нас есть 2 приложения, iOS и Android, с видеоплеером, который воспроизводит URL-адрес CloudFront. Android-приложение использует Google Exoplayer, а iOS-приложение - AVPlayer. Они оба представляют одни и те же проблемы.
Видео воспроизводится плавно из того же региона, что и исходная корзина S3. У нас были некоторые проблемы в начале, но мы исправили их, исправив кодировку битрейта.
Однако клиенты из удаленных стран жаловались на буферизацию: в среднем 1 минута для первоначальной загрузки видео, затем в среднем 12 секунд буферизации в минуту.
Поэтому мы решили добавить AWS CloudFront, чтобы файлы кэшировались в местоположениях Edge, что ускоряет загрузку видео.
Но клиенты продолжали жаловаться, и мы знали, что загрузка первого пользователя все еще займет некоторое время.
Поэтому в других регионах мы установили 2 сервера не-AWS, которые автоматически загружают видео, чтобы обеспечить их кэширование в этих двух регионах, как только они будут опубликованы.
Но, похоже, это тоже не поможет.
Мне интересно, эффективен ли AWS CloudFront для потоковой передачи видео через прямую загрузку, или нам что-то не хватает.
Как заставить CloudFront работать, чтобы избавиться от буферизации видео? Или, если CloudFront не является решением (почему?), Что мы должны смотреть?
Примечание: мы устанавливаем TTL на 10 лет, на всякий случай... и мы управляем недействительностью вручную.