如何使用aws服务创建视频流服务

问题描述 投票:0回答:2

我有一个项目需要创建一个视频流服务,用户可以上传他们的视频内容,视频流服务应该处理转码为不同的分辨率,添加水印和其他步骤。我需要在 AWS 上构建如此强大的系统的指导,这也具有成本效益。

我尝试从aws文档中设置一个基本的lambda,并使用mediaconvert,但我觉得我仍然需要创建更多的系统,而且我也在考虑aws成本,有人建议了一个自定义解决方案

amazon-web-services video-streaming media video-processing video-on-demand
2个回答
0
投票

我们就是这样发展的。

  • 前端将视频上传到 Cloudfront -> s3
  • 并存储包含视频详细信息的 json 文件,例如用户上传的任何其他字幕文件或任何缩略图
  • 一旦这个json文件上传到s3,事件桥就会启动一个step函数
  • Step 函数会有多个步骤,每个步骤执行特定的任务,你在这里使用 lambda 来消费你需要的所有服务。
  • 您可以添加任意数量的步骤,例如媒体转换、转录、Rekognition 或任何其他步骤。
  • 一旦stepfunction完成处理,它可以在SNS/SQS中生成一个事件,以通知消费者它已完成或是否有任何错误。

您可以遵循 AWS 的架构帮助。 https://aws.amazon.com/developer/application-security-performance/articles/video-streaming-architectures/ [![在此处输入图像描述][1]][1]


0
投票

以下是您可以遵循的高级架构和步骤:

  • 创建 Amazon S3 存储桶来存储上传的视频。这可以是 转码前视频的源位置。
  • 当新视频出现时,使用 AWS Lambda 触发视频处理工作流程 视频上传到S3存储桶。 Lambda 可以配置为运行 响应 S3 事件(例如,对象创建事件)。
  • 在 Lambda 函数中设置 AWS Elemental MediaConvert 作业以 将上传的视频转码为不同的分辨率。定义 根据您的要求进行输出设置。
  • 要添加水印,可以扩展Lambda函数或者引入 另一个 Lambda 函数,用于在转码后覆盖水印 视频。您可以使用存储在 S3 存储桶中的图像作为 水印。
  • 存储与视频相关的元数据,例如视频ID、用户、转码 Amazon DynamoDB 中的状态等。这对于跟踪 转码作业的状态和管理系统状态。
  • 使用 Amazon CloudFront(Cloudflare / Akamai - 更好的选择)进行内容交付,以提供对转码视频的低延迟访问。这也有助于减少源(S3 存储桶)的负载并改善最终用户体验。

从成本效益目的来看: A。优化 Lambda 函数执行时间以最大限度地降低成本。如果流量一致,请考虑使用预配置并发。 b.如果您有可预测且一致的转码工作负载,请考虑使用 AWS Elemental MediaConvert 的预留容量。 C。根据访问模式利用 S3 存储类。对于访问频率较低的视频,不频繁访问 (S3 IA) 或 Glacier 可能更具成本效益。 d.使用 AWS Cost Explorer 定期监控和分析您的 AWS 成本,并设置账单警报以保持在预算范围内。 e.对于可突发的转码工作负载,请考虑将 AWS Elemental MediaConvert 与 Spot 实例结合使用,以潜在地降低成本。

© www.soinside.com 2019 - 2024. All rights reserved.