挑战
固定容量的编码基础设施要么过度配置(成本高昂),要么配置不足(速度缓慢):
- 编码工作负载变化多端且不可预测
- 在内容发布期间,高峰时段可能会达到正常流量的 100 倍
- 在闲置时段,24/7 运行专用编码服务器成本高昂
- 作业失败需要自动检测和重试,无需人工干预
我们的解决方案
我们实施了一个无服务器编码管道,使用 AWS Lambda 触发器和 AWS MediaConvert 进行弹性、按需付费的视频处理。
架构
- 触发器:监控 S3 上传事件的 AWS Lambda 函数
- 编码:使用合作伙伴专用作业模板的 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 媒体服务通过 SRT 传输 FAST 频道流媒体
一家媒体公司需要使用 Secure Reliable Transport (SRT) 协议,为其 FAST 频道建立可靠、低延迟的贡献源,从而能够通过不稳定的互联网连接,从远程工作室、云播放系统和联合发行合作伙伴摄取高质量内容。
常见问题
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 费用。
