挑战
固定容量的编码基础设施要么过度配置(昂贵),要么配置不足(缓慢):
- 编码工作负载高度可变且不可预测
- 高峰期在内容发布时可能达到正常量的100倍
- 在安静时期运行专用编码服务器24/7非常昂贵
- 作业失败需要自动检测和重试,无需人工干预
我们的解决方案
我们实施了一个无服务器编码管道,使用 AWS Lambda 触发器和 AWS MediaConvert 进行弹性、按需付费的视频处理。
架构
- 触发器:AWS Lambda 函数监控 S3 上传事件
- 编码:AWS MediaConvert 使用特定合作伙伴的作业模板
- 消息传递:ActiveMQ/STOMP 用于异步作业状态更新
- 监控:NestJS 编码器后端跟踪作业进度
- 存储:AWS S3 用于输入/输出资产
管道流程
- S3 事件 - 视频上传触发 Lambda 函数
- 作业配置 - Lambda 读取合作伙伴配置文件并构建 MediaConvert 作业
- 提交 - MediaConvert 作业提交并设置适当的输出设置
- 进度跟踪 - STOMP 消息将状态传递给编码器后端
- 完成 - 输出资产存储在 S3 中,元数据更新在 MongoDB 中
- 错误处理 - 失败的作业排队等待重试,采用指数退避策略
关键特性
- 零闲置成本 - Lambda 和 MediaConvert 仅对实际使用收费
- 弹性扩展 - 处理1到1000+并发编码作业
- 合作伙伴模板 - 每个合作伙伴预配置的 MediaConvert 作业模板
- 事件驱动 - S3 事件自动触发编码工作流
- 全面监控 - 作业状态、持续时间和错误跟踪
成果
技术栈
caseStudyDetail.more 案例研究
探索更多我们的技术实施案例
SCTE-35 广告标记信令与媒体预告片插入管道
一家流媒体公司需要一个强大、自动化的管道,用于将 SCTE-35 广告标记注入直播和 VOD 流中,并能将宣传预告片(前贴片、中贴片和后贴片)精确地插入指定位置——从而实现跨 FAST 频道、直播活动和点播内容库的变现。
AWS Media Services 用于通过 SRT 进行 FAST 频道流媒体传输
一家媒体公司需要使用安全可靠传输(SRT)协议为其 FAST 频道建立可靠、低延迟的贡献源流——从而在不可预测的互联网连接上实现从远程工作室、云播出系统和合作伙伴的高质量内容采集。
AWS 媒体服务用于通过 HLS 进行 FAST 频道流媒体
一家媒体公司需要推出免费广告支持的流媒体电视(FAST)频道——通过 HLS 向智能电视、机顶盒和网络/移动播放器提供的 24/7 线性流的精选视频内容,通过程序化广告插入实现盈利。
常见问题
MicrocosmWorks 设计了一种分段处理架构,其中 Step Functions 编排整个管道:Lambda 函数将源视频分割成段,AWS MediaConvert 处理实际的转码,不受 Lambda 超时限制,并且一个最终的 Lambda 将输出拼接起来。这种混合方法保持了无服务器的成本模型,同时支持任意时长的视频。
MicrocosmWorks 测得,与运行专用的 EC2 编码实例相比,突发性视频处理工作负载的成本降低了 70-85%。该无服务器流水线在空闲时零成本,并在高峰期扩展到数百个并发作业,同时 AWS MediaConvert 的按分钟计费消除了为峰值容量预置的需求。
MicrocosmWorks 配置了 AWS Step Functions,并使用逐步重试策略和指数退避机制,确保失败的转码步骤自动重试,而无需重新启动整个管道。每个阶段将中间输出写入 S3,因此恢复可以从上次成功的检查点继续,而不是从源文件重新处理。
MicrocosmWorks 优化了该管道以支持准实时用例,通过在关键的 Lambda 函数上利用预置并发以及 MediaConvert 预留的转码槽位来缓解冷启动。对于实时工作流,该管道实现了从上传到交付 2-5 分钟的端到端延迟,这适用于片段提取和精彩集锦分发。
MicrocosmWorks 以每小时 25-45 美元的价格构建无服务器视频基础设施。一个完整的基于 MediaConvert 的管道,包括 Step Functions 编排、S3 生命周期管理和监控,通常需要 250-400 个开发小时。该架构的按量付费模式意味着客户只需支付与其实际处理量成比例的 AWS 费用。
