代码之家  ›  专栏  ›  技术社区  ›  user3198603

理解HLS的实现?

  •  0
  • user3198603  · 技术社区  · 5 年前

    用户将从浏览器上传需要存储在服务器上并播放的视频。谷歌的第一个理解是,我需要在这里使用HTTP直播(HLS)。 但我不确定它内部是如何工作的?

    上述工作流程中有三个组件,即用于保存和检索视频的客户端/服务器/数据存储。

    保存流: 我认为我需要插入HLS客户端来发送流数据。 客户端本身是否在发送文件时将文件分成块,并在每个块指向下一个块的位置维护这些块的链接?像这样的东西,因为我相信服务器是愚蠢的,将以同样的方式工作,作为http上传功能,而不需要其他智能在这里? 但不确定HLS服务器端组件在这里是如何工作的,即它会保存为单个文件,还是将单个文件拆分为多个文件,然后保存在磁盘上? 我相信它会像普通的http上传文件一样将文件存储为单个文件?

    检索部分 在正常的常规http文件下载中,客户端请求文件数据,服务器将响应分块发回,但所有响应分块都是针对同一请求发回的。

    我相信在HLS的情况下,它是基于拉的,客户机为每个流请求启动拉请求。在每个区块请求中,客户机获取下一个区块的文件名,并将请求发送到服务器。对于每个轮询请求,从单个文件中获取相关区块,等等?所以对于服务器来说,它的常规http文件下载请求和所有智能都取决于客户端

    0 回复  |  直到 5 年前
        1
  •  0
  •   Doug Sillars    5 年前

    保存流:上传视频时,必须将其转换为HLS格式。您可以使用FFMPEG来实现这一点。你最终会创建清单文件和视频的所有片段。

    检索部分: 玩家将读取清单文件,以了解要请求的片段。我写了一篇关于HLS回放如何处理清单文件的帖子: https://api.video/blog/video-trends/what-is-hls-video-streaming-and-how-does-it-work