Учебные пособия по потоковой передаче мультимедиа с помощью Amazon CloudFront
Преимущества Amazon CloudFront
С помощью Amazon CloudFront клиенты обеспечивают потоковую передачу видео зрителям по всему миру, используя все разнообразие протоколов, работающих поверх HTTP.
Сеть доставки контента (CDN) Amazon можно использовать совместно с мультимедийными сервисами AWS Elemental для реализации двух вариантов потоковой передачи видео. Сначала рассмотрим вариант потоковой передачи контента, хранящегося в сервисе Amazon Simple Storage Service (Amazon S3), по требованию. Затем рассмотрим вариант прямой трансляции мероприятий или круглосуточных каналов.
Рекомендации см. в техническом описании Amazon CloudFront для сферы медиа.
Building Serverless Video Workflows
Потоковая передача по требованию
При потоковой передаче по требованию видеоконтент хранится в Amazon S3. Зрители могут начать его просмотр в любое время, отсюда и название «по требованию». Чтобы создать комплексное решение для потоковой передачи по требованию, обычно используют Amazon S3 в качестве хранилища, AWS Elemental MediaConvert для обработки видеофайлов и Amazon CloudFront для доставки контента.
Amazon S3 – это отличное хранилище для видеоматериалов. Оно неограниченно масштабируется, обладает встроенными средствами обеспечения избыточности и предоставляется клиентам с оплатой по факту использования. Загружать контент в хранилище S3 можно несколькими способами. При небольшом объеме контента можно начать работу с консоли управления AWS, а затем, по мере увеличения объема, перейти к более автоматизированной системе. S3 очень просто использовать из консоли. После создания аккаунта AWS достаточно просто войти в систему, создать корзину S3 и загрузить контент. Если требуется реализовать автоматизированную систему, можно использовать интерфейс командной строки AWS для собственных скриптов либо вызывать API Amazon S3 в собственном коде.
После загрузки может потребоваться преобразовать видео для получения размера, разрешения или формата, необходимого конкретному телевизору или подключенному устройству. Эти задачи помогает решить сервис AWS Elemental MediaConvert. MediaConvert извлекает контент из S3, осуществляет его перекодирование по запросу клиента и сохраняет результат обратно в S3. Перекодирование заключается в обработке видеофайлов с целью создания сжатых версий исходного контента. Оно позволяет уменьшить размер файла, изменить формат или повысить совместимость с устройствами воспроизведения. Процессом перекодирования можно управлять из консоли управления AWS, из командной строки либо с помощью API MediaConvert.
После безопасного сохранения контента и обеспечения его доступности в необходимых пользователям форматах следующим шагом будет обеспечение глобальной доставки контента с помощью Amazon CloudFront. Сеть доставки контента Amazon кэширует контент на периферии, чтобы обеспечить доставку видео с низкой задержкой и высокой пропускной способностью. Благодаря масштабируемости объемы передаваемого видео могут быть сколь угодно большими или малыми. Принцип оплаты по факту использования позволяет просто справляться с неожиданными пиками спроса (подробнее см. на странице цен на CloudFront).
На этом этапе наша инструкция разветвляется: далее возможны два варианта. Можно доставлять на устройство весь видеофайл перед воспроизведением либо передавать его на устройство в потоковом режиме.
Первый вариант очень прост в реализации и поддерживается практически любым мобильным устройством и настольным компьютером. Все, что нужно сделать, – это разместить контент в корзине S3 и создать базу раздачи CloudFront, указывающую на эту корзину. Видеопроигрыватель пользователя будет использовать для запроса видеофайла URL-адреса CloudFront, доступные в рамках базы раздачи. Запрос будет направляться в оптимальное периферийное местоположение в зависимости от местонахождения пользователя. CDN будет передавать видео из своего кэша, а если оно еще не было кэшировано – загрузит из корзины S3. Этот вариант имеет несколько недостатков. Он неэффективно использует пропускную способность, доступную конечному пользователю. Если пользователь решит не смотреть видео до конца, ему все равно придется загрузить контент, который никогда не будет просмотрен, и этот процесс вам придется оплачивать.
Почти во всех случаях предпочтительным является другой вариант. Семейство протоколов потоковой передачи видео, в том числе Apple HTTP Live Streaming (HLS), Dynamic Adaptive Streaming over HTTP (DASH), Microsoft Smooth Streaming (MSS) и Adobe HTTP Dynamic Streaming (HDS), повышают удобство для пользователей путем доставки видео по мере его просмотра: как правило, загрузка контента осуществляется за несколько секунд до того, как он понадобится. Воспроизведение начинается быстрее, быстрая перемотка работает эффективнее, повышается общий комфорт для пользователя при просмотре. При выборе этого варианта оплачивать приходится только то, что смотрит зритель, на стороне конечных пользователей не тратится впустую пропускная способность, к тому же они быстрее видят желаемый контент.
Реализация второго варианта потребует немного большей работы. Сначала нужно применить сервис MediaConvert для преобразования видеофайлов в формат HLS (наиболее широко поддерживаемый протокол потоковой передачи). При этом видео делится на короткие сегменты, для него создается файл манифеста. Затем требуется указать базе раздачи CloudFront, где находится манифест. Наконец, чтобы обеспечить воспроизведение видеопотока, следует встроить URL-адрес манифеста в проигрыватели, с помощью которых пользователи будут смотреть прямые трансляции. Например, чтобы воспроизвести видеопоток с файлом манифеста myStream/playlist.m3u8 и базой раздачи CloudFront d111111abcdef8.cloudfront.net, необходимо встроить в проигрыватели следующий URL-адрес: http://d111111abcdef8.cloudfront.net/myStream/playlist.m3u8.
На странице «Видео по требованию в AWS» приведены рекомендации и указания, которые следует учитывать при реализации рабочего процесса доставки видео по требованию в облаке AWS, а также представлено решение AWS, которое автоматически выделяет сервисы, необходимые для создания масштабируемой распределенной архитектуры для загрузки, хранения, обработки и доставки видеоконтента.
Прямые трансляции
В случае прямых трансляций контент клиента представляет собой мероприятия в прямом эфире или программы каналов с круглосуточным вещанием. Первый вариант включает организаторов трансляций и агрегаторов контента, которые транслируют спортивные соревнования, церемонии награждений, выступления на конференциях и другие популярные события в прямом эфире. Ко второму варианту относятся студии, организаторы вещания и операторы платного телевидения, которые хотели бы доставлять линейные каналы прямого вещания через Интернет непосредственно своей аудитории, без использования сторонней платформы распространения.
С помощью AWS можно без лишних затрат начать прямую трансляцию контента для глобальной аудитории, выполнив несколько простых шагов.
Первым шагом является потоковая обработка видео. Для этой цели можно использовать сервис AWS Elemental MediaLive, который кодирует видеопотоки в режиме реального времени. Он получает на вход видеоизображение большего размера (например, от локального кодировщика, такого как AWS Elemental Live) и сжимает его, создавая версии меньшего размера для доставки зрителям. На втором шаге в зависимости от конкретного примера использования можно выбрать один из двух вариантов. Можно использовать в качестве источника сервис своевременного сжатия (например, AWS Elemental MediaPackage), позволяющий преобразовывать видеоконтент из одного формата во множество других форматов и безопасно упаковывать его для различных типов устройств. Сервис AWS Elemental MediaPackage обеспечивает простую работу с популярными возможностями воспроизведения видео для пользователей (повторное воспроизведение, пауза, перемотка и т. д.), похожими на те, которыми оснащены стандартные видеозаписывающие устройства. Кроме того, он использует для выпускаемого контента технические средства защиты авторских прав (DRM). Альтернативный вариант применяется, если кодировщик сразу производит контент в формате, требуемом всеми устройствами конечных пользователей. Тогда можно использовать высокопроизводительный масштабируемый источник, например AWS Elemental MediaStore. Сервисы MediaPackage и MediaStore доставляют контент в сервис Amazon CloudFront, а он, в свою очередь, направляет его к зрителям, которые смотрят мероприятие.
Как только решение будет запущено, мероприятие в прямом эфире можно будет экономично транслировать по всему миру, обеспечивая необходимое масштабирование. CDN может адаптироваться к изменениям размера аудитории, включая одновременное подключение большого количества зрителей.
На странице «Прямые видеотрансляции» приведены рекомендации и указания, которые следует учитывать при организации рабочего процесса прямой видеотрансляции в облаке AWS, а также представлено решение AWS, которое автоматически выделяет сервисы, необходимые для создания высокодоступной экономичной архитектуры для исключительно комфортного просмотра видео в режиме реального времени.