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