HLS、HTTP+FLV、DASH

HLS、HTTP+FLV 和 DASH 是三种常见的流媒体传输协议,它们在技术实现、使用场景和优缺点方面都有显著的区别。以下是对它们的关系和区别的详细解释,以及当前最流行的流媒体传输协议的讨论。

HLS(HTTP Live Streaming)

  1. 开发者

    • 由 Apple 开发。
  2. 工作原理

    • 将视频切片成小的 TS 文件,并生成一个 m3u8 播放列表文件。播放器下载 m3u8 文件并解析各个片段的 URL 进行播放。
  3. 优点

    • 广泛支持:特别是在 Apple 设备和 Safari 浏览器中。
    • 自适应比特率流(ABR):可以根据网络状况动态调整流的质量。
    • 标准 HTTP 服务器支持:易于部署和使用 CDN。
  4. 缺点

    • 延迟较高:通常在 10-30 秒之间。
    • 切片和播放列表管理:实现较复杂。

HTTP+FLV

  1. 开发者

    • 基于 Flash Video (FLV) 格式,由 Adobe 推出。虽然 Flash 已经被淘汰,但 HTTP+FLV 仍然在某些场景中使用。
  2. 工作原理

    • 实时推送音视频数据到服务器,通过 HTTP 持久连接(如 Chunked Transfer Encoding)将数据流式传输到客户端。
  3. 优点

    • 低延迟:通常为 1-5 秒。
    • 实现简单:直接流式传输,不需要切片和播放列表管理。
  4. 缺点

    • 兼容性较差:原本依赖 Flash,现在需要其他技术方案替代。
    • 扩展性较差:长连接特性在大规模分发时压力较大。

DASH(Dynamic Adaptive Streaming over HTTP)

  1. 开发者

    • 由 MPEG 开发,作为国际标准。
  2. 工作原理

    • 类似于 HLS,将视频切片成小的文件,并生成一个 MPD(Media Presentation Description)文件。播放器解析 MPD 文件,动态选择合适的片段进行播放。
  3. 优点

    • 自适应比特率流(ABR):根据网络状况动态调整流的质量。
    • 广泛支持:跨平台支持,包括现代浏览器和设备。
    • 标准化:作为国际标准,具有广泛的适应性。
  4. 缺点

    • 延迟:比 HTTP+FLV 稍高,但通常低于 HLS,通常在 5-10 秒之间。
    • 实现复杂度:类似于 HLS,需要切片和播放列表管理。

当前最流行的流媒体传输协议

当前最流行的流媒体传输协议主要是 HLSDASH,原因如下:

  1. HLS

    • 广泛支持:尤其在 Apple 设备和 Safari 浏览器中,HLS 是默认支持的协议。
    • CDN 友好:通过 HTTP 服务器传输,易于使用 CDN 进行大规模分发。
    • 自适应比特率:提升用户体验,适应不同网络状况。
  2. DASH

    • 跨平台支持:作为国际标准,得到广泛支持,包括在现代浏览器中。
    • 自适应比特率:与 HLS 类似,可以动态调整流的质量以适应网络状况。
    • 灵活性:支持多种编解码器和传输格式。

虽然 HTTP+FLV 在某些低延迟场景(如在线教育和互动直播)仍然使用,但由于 Flash 的淘汰和兼容性问题,它的使用范围相对较小。

关系和总结

  • HLS 和 DASH

    • 都是基于 HTTP 的自适应流媒体协议,适用于大规模分发和跨平台支持。
    • HLS 在 Apple 设备中更为流行,而 DASH 作为国际标准在多种设备和平台中得到广泛支持。
  • HTTP+FLV

    • 主要用于低延迟直播场景,但因兼容性和扩展性问题,逐渐被其他协议取代。

最流行的协议

目前,HLSDASH 是最流行的流媒体传输协议,广泛用于视频点播、直播和大规模分发场景。选择使用哪种协议通常取决于目标设备、延迟要求和具体的应用场景。


 

补充:

MPEG-DASH 会将视频分解成更小的片段(通常为 2-4 秒,但可以配置,HLS 切片持续时间通常为 6-10 秒),并以不同的质量级别对这些片段进行编码。这使得有可能流式传输不同质量级别的视频,并在视频中间从一种质量级别切换到另一种质量级别

编码格式: MPEG-DASH 允许使用任何编码标准。另一方面,HLS 需要使用 H.264 或 H.265。

设备支持: HLS 是唯一受 Apple 设备支持的格式。iPhone、MacBook 和其他 Apple 产品无法播放通过 MPEG-DASH 传输的视频。

片段长度:这是 2016 年以前协议之间的较大差异,当时 HLS 的默认片段长度为 10 秒。今天,HLS 的默认长度为 6 秒,但可以调整。MPEG-DASH 片段的长度通常在 2 到 10 秒之间,但最佳长度是 2 到 4 秒。

posted @ 2024-05-31 15:16  strive-sun  阅读(59)  评论(0编辑  收藏  举报