【问题标题】:Live streaming or on Demand content (HLS, HTTP Range Requests)直播或点播内容(HLS、HTTP 范围请求)
【发布时间】:2019-11-21 13:20:03
【问题描述】:

我正在尝试处理浏览器和移动应用程序中的流式传输(或者更确切地说是音频点播)。出现的一些问题在找到具体答案时并不是很成功。也许有人会告诉我。

  1. HLS的特点是什么? 音频点播?
  2. 如果有HTTP Range Requests,HLS 是什么? 规范?
  3. 还是 HLS 在内部使用 HTTP 范围请求?

感谢您的回答!

【问题讨论】:

  • 查找渐进式下载与流式传输。如果服务器支持 HTTP 范围请求,那么您可以在 HLS 中使用 EXT-X-BYTERANGE(协议版本 4+)。
  • @aergistal 谢谢!

标签: streaming audio-streaming http-live-streaming


【解决方案1】:
  1. 这取决于:点播音频并不总是需要 HLS。 HLS 使您能够拥有相同内容的多个质量级别(不同的比特率)。 例如,在计量蜂窝连接上,您可能希望使用低带宽(如 32 kBits/s 的 AAC HEv2)。 对于 WiFi 或有线无限制连接,您可以以 256 kBits/s 的速度进行流式传输。 使用 HLS,您可以将所有不同的质量级别整合到一个包中。

  2. 通常,对于 HLS on demand,您会为每个质量级别创建一个文件,HLS 播放列表会告诉您字节偏移量和长度是为了找到块 - 以便您可以查找。您的客户端将读取播放列表 - 获取要读取的块的偏移量和长度,然后执行 HTTP 范围请求。因此,单个文件 HLS 流与 HTTP 范围请求一起使用。

  3. 托管单个文件 HLS 流的 HTTP 服务器必须支持 HTTP 范围请求,并且客户端/播放器必须执行范围请求。所以 - 是的 - HTTP 范围请求是系统的一部分。

如果 HLS 流存储在许多小块中 - 更常见于实时流 - 不使用 HTTP 范围请求。

【讨论】:

  • 感谢您的长篇回答!那么,如果我只有一个没有不同比特率的 mp3 文件,我可以将它作为静态文件由服务器分发,并且客户端已经请求了必要的块(通过 HTTP 范围请求),对吧?所以我在时间线中获得了随机访问的伪流。
  • 最好将 mp3 文件包装在 mp4 容器中。 mp4 具有查找所需的额外元数据。没有办法知道如何将字节范围转换为 mp3 以查找特定时间。
  • @szatmary 而且它仍然不需要额外的协议,对吧?仅仅是浏览器(例如)将有可能在时间线上随机访问吗?但请解释以下行为:为什么当我在浏览器中打开 mp3 文件时,服务器首先给出响应 200 并 Content-Length: 115131081,然后浏览器询问 Range: bytes = 0-,服务器给他整个文件还是没有?然后,当您沿着轨道移动时,浏览器会从服务器查询Range: bytes = 4685824-。在这种情况下,优化在哪里?
  • @ФёдорЕрастов - 准确的随机访问取决于您创建 MP3 文件的方式以及播放器的实施情况。我会制作具有恒定比特率的 mp3 文件并填充长度元数据(ID3 TLEN)。现在播放器可以发出 HTTP HEAD 请求以获取完整的文件大小,然后从文件开头的 ID3 标签 TLEN 读取长度(以秒为单位)。现在玩家可以近似随机访问的字节偏移量。
  • @MarkusSchumann Okey,我明白了,如果服务器支持部分内容,那么客户端播放器负责工作质量和优化请求。或者使用 mp4,其中包含有关范围的元数据。或者使用现成的协议。
猜你喜欢
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多