【发布时间】:2012-11-25 16:48:49
【问题描述】:
我正在努力快速了解 HDS 和 HLS 直播背后的一些底层技术。
我在 EC2 的 Amazon WebServices 实例上设置了 Wowza Media server 3.5 并通过 CloudFront 分发。我做了我的第一个现场活动,看着我的服务器负载越来越高。我想知道是否有人可以帮助我了解 HDS/HLS 直播(和 nDVR ......)的一些基础:
- Wowza 是我的云端分发的源服务器
- HDS 清单文件设置为在 CF 中缓存 2 秒(TTL 时间)
- 我检查了访问我的 Wowza 实例的所有 IP,它们实际上是 CF 缓存位置或边缘服务器
- (假设)由于所有 HDS 流量都通过端口 80,所有视频内容最终都被缓存在边缘位置(尽管 2 秒)
这就是我的问题所在:如何为视频内容提供数据(这是我的理解,请直截了当!): - 当观众请求播放列表或 mainfest 文件时,他们会返回 XML,这会将播放器指向他们接下来需要播放的一段视频/音频(DVR 应用程序实例中的 m4fa 和 m4fv?)数据。由于这些数据也是通过端口 80 传递的,因此它也会被缓存。
如果以上陈述正确,那么以下对于 HDS 和 HLS 的优化是否有意义:
案例 1:DVR 服务: 我在 CloudFront 中设置缓存规则如下:
- 以“f4m”、“m3u8”和“?DVR”结尾的任何内容都缓存 2 秒(播放列表/清单文件)
- 其他所有内容的默认值应该缓存更长的时间(可能是一个小时,或者 24 小时......?) 这样,DVR 数据会保持缓存状态,但播放列表会每 2 秒更新一次
案例 2:没有 DVR 服务(这是更好的优化方式吗?)
- 我怀疑我们也可以通过同时终止 DVR 服务来优化服务器负载,这样通过 CF 分发的所有数据都只是最新的音频/视频数据包 - 因此所有观众都应该请求相同的播放列表和数据文件,因此,大量请求这些文件的人没什么大不了的,因为我的服务器每 2 秒从每个边缘位置受到一次访问以更新清单文件)。
- 如果媒体文件块被赋予更长的缓存时间,如果媒体仍然缓存,我们是否会终止 DVR 服务?
感谢您提供的任何见解!
【问题讨论】:
-
我认为您理解正确。我刚刚有一个问题——缓存是否有可能因为 url 中的 sessionid 而变得混乱?
-
是的,vipw,这就是我看到的行为。如果您有任何想法,我目前正在文档中寻找禁用这些唯一会话 ID 的方法!感谢您的建议!
-
我认为您需要采用推送式的方法。您可以让脚本从 Wowza 初始化一个会话,并将它读取的内容推送到 CloudFront 正在读取的 S3。但是我已经有几年没有使用Wowza了,他们可能有更好的解决方案。你在他们的论坛上问过吗?它们对我的经验非常有帮助。
标签: amazon-web-services http-live-streaming amazon-cloudfront live-streaming wowza