我正在尝试快速学习 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 将播放器指向一段视频/audio(DVR 应用程序实例中的 m4fa 和 m4fv?)接下来需要播放的数据。由于此数据也是通过端口 80 传递的,因此它也会被缓存。
如果上述陈述是正确的,那么以下对于 HDS 和 HLS 的优化是否有意义:
案例一:DVR服务:我在CloudFront中设置缓存规则如下:
- 任何以“f4m”、“m3u8”和“?DVR”结尾的内容缓存 2 秒(播放列表/清单文件)
- 其他所有内容的默认值应该缓存更长的时间(可能是一个小时,还是 24 小时......?)这样,DVR 数据保持缓存,但播放列表每 2 秒更新一次
案例 2:没有 DVR 服务(这是更好的优化方式吗?)
- 我怀疑我们也可以通过同时终止 DVR 服务来优化服务器负载,这样通过 CF 分发的所有数据只是最新的音频/视频数据包 - 因此所有观众都应该请求相同的播放列表和数据文件,因此大量请求这些文件的人没什么大不了的,因为我的服务器每 2 秒才从每个边缘位置受到一次访问以更新清单文件)。
- 如果媒体文件块被赋予更长的缓存时间,如果媒体仍然缓存,我们是否终止 DVR 服务是否重要?
感谢您提供的任何见解!