Может ли 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/AmazonCloudFront/latest/ DeveloperGuide / Tutorials.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/wowza-creating-stack.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-creating.html dc..amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-values-define.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AMS5.0SubscribeingToAMS.html docs.aws.amazon.com/AmazonCloudFront/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 для прямой трансляции.
Это возможно и как?
Большое вам спасибо. С наилучшими пожеланиями
2 ответа
Я только что провел некоторое время, работая над этим недавно. Ответ - нет, как указывает другой ответ на этот вопрос.
Тем не менее, вы можете по существу подключить свой собственный RTMP CDN с помощью AWS. Вы можете настроить кучу экземпляров nginx-rtmp как ребра.
Документацию по nginx-rtmp можно найти на GitHub проекта ( https://github.com/arut/nginx-rtmp-module/). В основном вы запускаете кучу таких способов, которые предпочитаете (экземпляры EC2, ECS, как я, или как вам нравится), но вы настраиваете их для извлечения с сервера Inest.
Затем вы загружаете баланс краев и вытягиваете их для просмотра.
Это становится немного сложнее, поскольку вы в основном создаете свой собственный CDN с нуля с использованием экземпляров AWS EC2 и, возможно, хотите иметь точки распространения в нескольких регионах. В зависимости от масштаба может иметь смысл иметь промежуточные узлы, которые служат для вытягивания из источника и перераспределения по краям региона.
Смотрите директиву pull в nginx-rtmp. Пример конфигурации:
rtmp {
server {
listen 1935;
application streamapp {
live on;
pull rtmp://my-streaming-server.com:1935/streamapp;
}
}
}
Дистрибутив 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. Для RTMP Live Streaming вы можете посмотреть другие сервисы CDN, такие как Akamai. Вы должны иметь возможность использовать обе службы вместе, если вы хотите использовать CloudFront для вашего HTTP-трафика и Akamai для ваших RTMP Live Streams.