Назад | Перейти на главную страницу

Может ли AWS поддерживать прямую трансляцию на основе RTMP с помощью CloudFront или CloudFormation

Насколько я понимаю, читая все эти статьи:

docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-overview.html docs.aws.amazon.com/Amazonlatest/CloudFront DeveloperGuide / Tutorials.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/wowza-creating-stack.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-creatings.html. .amazon.com / AmazonCloudFront / latest / DeveloperGuide / distribution-rtmp-values-define.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AMS5.0SubscribingToAMS.html docs.aws.amazon.com/AmazonCloudFront/latest/latest /DeveloperGuide/LiveStreamingAdobeMediaServer5.0.html

И, в частности, следующее:

https://aws.amazon.com/it/blogs/aws/amazon-cloudfront-now-supports-streaming-media-content/ https://aws.amazon.com/it/blogs/aws/using-amazon-cloudfront-for-video-streaming/

Похоже, что невозможно отразить RTMP в реальном времени с использованием CloudFront с веб-распределением или распределением RTMP по TCP 80 или TCP 1935, поскольку эти распределения основаны на доставке / зеркалировании / кэшировании статических файлов для проигрывателей и видеофайлов (FLV ).

Поддержка потоковой передачи в реальном времени предлагается Amazon через стек CloudFormation и Adobe Media Server или интеграцию с WOWZA, но в нашем сценарии у клиента уже есть собственный потоковый сервер Red5, который уже работает и настроен.

Как можно использовать CloudFront для зеркалирования RTMP-соединения Live Streaming на TCP 80 или 1935, используя исходный сервер и поток RTMP, работающий на Red5, вместо доставки статического FLV-файла с хостинга S3?

Я хотел бы понять, поддерживается ли это решение Amazon и где найти базу знаний для выполнения такой настройки.

По сути, в нашем сценарии у нас уже есть RTMP, доступный в общедоступном Интернете, нам нужно только AWS, чтобы кэшировать его через CloudFront и обслуживать других клиентов.

Мы хотим попробовать сделать веб-распространение только для Flash Player, который будет загружен клиентами для просмотра потоковой передачи, и мы хотели бы, чтобы проигрыватель указывал на URL-адрес зеркального отображения AWS CDN для потоковой передачи в реальном времени.

Возможно ли это и как?

Огромное спасибо. С наилучшими пожеланиями

Распространение CloudFront может доставлять потоковый контент с использованием следующих потоковых протоколов на основе HTTP:

  • Adobe HTTP Dynamic Streaming (Adobe HDS)
  • Apple HTTP Live Streaming (Apple HLS)
  • Microsoft Smooth Streaming
  • MPEG-DASH

Cloudfront предназначен для распределения трафика HTTP VOD / Live Stream и RTMP VOD. Для Live Streaming RTMP вы можете посмотреть другие службы CDN, такие как Akamai. Вы должны иметь возможность использовать обе службы вместе, если хотите использовать CloudFront для своего HTTP-трафика и Akamai для потоков RTMP Live Streams.

Недавно я потратил некоторое время на работу над этим. Ответ - нет, как указывает другой ответ на этот вопрос.

Тем не менее, вы можете создать собственный RTMP CDN с помощью AWS. Вы можете настроить несколько экземпляров nginx-rtmp в качестве ребер.

Документацию по nginx-rtmp можно найти на GitHub проекта (https://github.com/arut/nginx-rtmp-module/). Вы в основном запускаете кучу из них, как хотите (экземпляры EC2, ECS, как я, или как вам нравится), но вы настраиваете их для извлечения с сервера приема.

Затем вы загружаете балансировку краев и снимаете с них для просмотра.

Это немного усложняется, поскольку вы в основном создаете собственный CDN с нуля с использованием экземпляров AWS EC2 и, вероятно, хотите иметь точки распространения в нескольких регионах. В зависимости от вашего масштаба может иметь смысл иметь промежуточные узлы, которые служат для извлечения из исходной точки и перераспределения по региональным границам.

См. Директиву pull в nginx-rtmp. Пример конфигурации:

rtmp {
   server {
       listen 1935;

       application streamapp {
           live on;
           pull rtmp://my-streaming-server.com:1935/streamapp;
      }
   }
}