我们将视频文件存储在 Amazon S3-Buckets 中,并通过 CloudFront 进行播放。不幸的是,尽管 CloudFront 具有源拉机制,但文件仅在第一次请求时从 S3 传输到边缘。这导致一个问题,即每个地区(我们在全球范围内提供服务)的每个第一个用户在流媒体上都会有很大的延迟。
我没有找到将新视频文件自动直接推送到所有边缘的可能性,但我们需要一个解决方案(并且事实上 CloudFront 有时太慢)。
有没有能够
- 使用S3作为存储源
- 安全流媒体(例如 RTMPe)
- 自动从 S3 存储桶中提取新文件(或具有类似机制)
- 频繁记录流统计数据
或者有什么方法可以解决我的 CloudFront 问题?
多谢。
答案1
我认为您会发现大多数 CDN 的架构都类似,即使它们提供集中存储。如果没有人请求内容,将内容推送到边缘是没有意义的,因此它们会按需进行。
这在实践中真的是一个问题吗?在我看来,它们的初始启动延迟最多为一秒钟左右,以便将视频文件头传送到边缘流服务器,然后 CloudFront 的内部带宽足以将视频直接流式传输给最终用户,而不会出现明显的性能问题。
我相信 Akamai/LimeLight/Level3 或其他大型签约 CDN 会为您提供解决方案,通过 SLA 将内容推送到上传的边缘,但成本会更高。CloudFront 价格低廉,您付出的钱物有所值。
最后,检查您的 MP4 文件格式标头,并确保在文件开头正确设置了 MOOV 原子,以允许在不下载完整文件的情况下进行搜索和流式传输。这样,边缘服务器就可以在从 S3 获取整个电影文件之前开始流式传输。不确定您使用的是什么编码器,但通常有一个“针对流式传输或网络进行优化”选项可用。这里是有关用于修改现有视频的开源工具的更多信息。