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