AWS 是否可以使用 CloudFront 或 CloudFormation 支持基于 RTMP 的直播流

AWS 是否可以使用 CloudFront 或 CloudFormation 支持基于 RTMP 的直播流

据我了解,阅读所有这些文章:

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 docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-values-specify.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AMS5.0SubscribingToAMS.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/

看起来无法使用 CloudFront 通过 TCP 80 或 TCP 1935 上的 Web 或 RTMP 分发来镜像实时流 RTMP,因为这些分发基于播放器和视频文件(FLV)的静态文件的传送/镜像/缓存。

亚马逊通过 CloudFormation 堆栈和 Adob​​e Media Server 或 WOWZA 集成提供对直播的支持,但在我们的场景中,客户端已经拥有自己的 Red5 流媒体服务器,并且已经在运行和设置。

如何使用 CloudFront 镜像 TCP 80 或 1935 上的实时流 RTMP 连接,通过使用在 Red5 上运行的原始服务器和 RTMP 流,而不是从 S3 托管提供静态 FLV 文件?

我想了解亚马逊是否支持该解决方案,以及在哪里可以找到执行此类配置的知识库。

基本上,在我们的场景中,我们已经在公共网络上公开了 RTMP,我们只需要 AWS 通过 CloudFront 将其缓存并提供给其他客户端。

我们想要尝试仅为 Flash Player 进行 Web 分发,该 Flash Player 将由客户端下载以观看流媒体,并且我们希望播放器指向 AWS CDN 镜像 URL 以进行实时流媒体播放。

这可能吗?如何实现?

非常感谢。致以最诚挚的问候

答案1

我最近花了一些时间研究这个问题。答案是否定的,正如这个问题的另一个答案所指出的那样。

但是,你基本上可以使用 AWS 来串起你自己的 RTMP CDN。你可以设置一堆 nginx-rtmp 实例作为边缘。

nginx-rtmp 文档可以在项目的 GitHub 上找到(https://github.com/arut/nginx-rtmp-module/)。基本上,您可以按照自己喜欢的方式运行这些实例(EC2 实例、我正在使用的 ECS,或者任何您喜欢的方式),但您可以将它们配置为从提取服务器中提取。

然后,您可以平衡边缘并从边缘拉出以进行查看。

这有点复杂,因为你基本上是使用 AWS EC2 实例从头开始构建自己的 CDN,并且可能希望在多个区域拥有分发点。根据你的规模,拥有用于从原点拉取并重新分配到区域边缘的中间节点可能是有意义的。

请参阅 nginx-rtmp 中的“pull”指令。示例配置:

rtmp {
   server {
       listen 1935;

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

答案2

CloudFront 分配可以使用以下基于 HTTP 的流式传输协议来传输流式传输内容:

  • Adobe HTTP 动态流 (Adobe HDS)
  • Apple HTTP 实时流 (Apple HLS)
  • Microsoft Smooth Streaming
  • MPEG-DASH

Cloudfront 旨在分发 HTTP VOD/直播流流量和 RTMP VOD。对于直播 RTMP,您可能需要查看其他 CDN 服务,例如 Akamai。如果您想将 CloudFront 用于 HTTP 流量,将 Akamai 用于 RTMP 直播流,那么您应该能够同时使用这两种服务。

相关内容