我们注意到 HLS 在一个正在开发的视频点播 iOS 应用程序中、在高延迟网络上的性能极差,并希望对下载的发生方式进行一些手动调整。
这些文件(完全编码的、从头到尾的 TS/M3U8 文件)已经在 CloudFront 上提供,所以我们在服务器端可以做的只有这么多来优化它(我认为)。
另一个希望是在 iOS 应用程序中运行一个本地主机服务器,让这个“服务器”通过优先于更频繁、更小段的下载来管理下载。因此,希望能够规避网络的高延迟,同时仍然能够使用可用的体面带宽。
这里的想法是让我们自己了解基础“index.m3u8”及其描述的所有比特率,并且只向 iOS 公开一个简单的 TS 文件“播放列表”(没有任何比特率信息)。
但是,我陷入困境的是试图弄清楚 iOS 将如何实际请求 TS 文件。也就是说,即使 iOS 尝试播放“直接”的 M3U8 文件(一个没有多个比特率的文件),我相信它也会尝试发送 TS 文件的范围请求。但是在不知道这些文件的比特率的情况下,iOS 会请求 localhost 的字节范围是多少?即使它确实请求特定的字节范围,它怎么可能是正确的?由于我之前从 localhost 向 iOS 提供的文件,可能是比特率为 1 Mbps 的“5.ts”,而下一个文件可能是比特率为 500 Kbps 的“6.ts”。iOS 无法估计下一个文件的正确字节范围是多少?
我概述的方法(为每个 TS 文件切换比特率,对 iOS 透明)甚至可以工作吗?或者,M3U8 中指定的所有 TS 文件是否必须强制具有与我尚未阅读的 HLS 规范的某些部分相同的比特率?
我想我可能会混淆一些事情,或者没有正确理解 iOS 是如何与基本流媒体一起工作的。一些关于这方面的真正知识将非常有帮助。
谢谢!