Инженеры, стремящиеся предотвратить эту возможность, разработали систему, в которой можно было бы перепрофилировать несколько закодированных версий загруженных видео, каждая из которых имеет разные характеристики. Благодаря перепрофилированию одного типа кодирования видео для создания другого типа вычислительные ресурсы для менее просматриваемых видео были сокращены на 94 %, а количество ресурсов было реализовано значительно меньше.
Поскольку доступно больше ресурсов, это дало инженерам возможность производить более продвинутые кодировки, позволяя большему количеству людей просматривать более плавное воспроизведение более четкого видеоконтента.
Расходы на вычисление видео
По сути, в Instagram существует два типа кодирования видео:
- Кодировки с минимальным функционалом, совместимые со всеми пользователями Instagram. Они имеют более низкую эффективность сжатия, легче декодируются старыми устройствами и могут воспроизводиться практически кем угодно.
- Расширенные кодировки используют новые технологии сжатия для более качественного воспроизведения. Это обеспечивает большую четкость и более четкие детали с меньшим количеством битов.
Проблема с этим методом кодирования заключалась в том, что Instagram тратил 80% своих ресурсов на обработку кодировок с минимальной функциональностью. Этот курс монополизировал бы систему с кодировками минимальной функциональности в течение года. Расширенные кодировки заняли всего 15% от общего времени просмотра. Было обнаружено, что если расходы будут сосредоточены на кодировании с минимальной функциональностью, то это вскоре помешает им вообще предлагать расширенное время просмотра кодирования видео.
Избыточные рабочие нагрузки
Существует две минимальные кодировки функциональности:
- Кодировки с базовой адаптивной скоростью передачи данных (ABR) — наиболее просматриваемая кодировка из кодировок с минимальной функциональностью. Существуют версии, и воспроизведение можно регулировать между версиями для скорости соединения для наиболее устойчивого воспроизведения. Это предотвращает зависание, вызванное изменениями пропускной способности. Обычно это называется потоковой передачей с адаптивной скоростью передачи данных.
- Прогрессивное кодирование — этот редко используемый пакет кодирования используется для более старых версий приложения Instagram, которые не поддерживают воспроизведение ABR.
Традиционно ABR и профиль прогрессивного кодирования создаются, когда клиент загружает исходный видеофайл. Как правило, это требует вычислительных ресурсов: загрузка 23-секундного видео занимает 86,17 секунды. Инженеры заметили, что настройки были одинаковыми для обоих наборов кодирования. Были доступны и разработаны очень похожие кодеки. Что команда обнаружила в момент A-Ha, так это то, что они могут заменить базовые кодировки ABR на видеокадры с прогрессивным кодированием, переупаковав их в файловую структуру с поддержкой ABR.