如何实现http视频流(HLS)

问题描述 投票:0回答:1

我想实现一个简单的服务器(C++)来生成(捕获)视频流并将其发送到浏览器。
问题是:服务器应该如何与浏览器交互?

我认为“HTTP Live Streaming (HLS)”技术是最简单的,因为我已经掌握了网络/http交互是可行的。

如果我理解正确的话:

  1. 服务器应分割视频并准备描述块序列的 M3U8 文件 - 小视频文件, 以下步骤对我来说不太清楚。
  2. 浏览器发送GET请求(?)来接收M3U8,获取块列表,
  3. 浏览器播放下载的块,
  4. 下一步尚不清楚 - 流(实时)视频正在继续 - 浏览器如何知道 - 下一个块的名称?

我发现我在这里失去了逻辑......

如何强制浏览器持续获取视频块?
也许我上面的事情是错的?你能解释一下基本步骤吗?

http http-live-streaming
1个回答
0
投票

我认为“HTTP Live Streaming (HLS)”技术是最简单的,因为我已经掌握了网络/http交互是可行的。

在大多数情况下,这绝对不是最简单的。处理简单的 HTTP 请求和传输连续流要容易得多。然后,客户端只是一个

<video>
元素。

  1. 浏览器发送GET请求(?)来接收M3U8,获取块列表,

正确。

  1. 下一步尚不清楚 - 流(实时)视频正在继续 - 浏览器如何知道 - 下一个块的名称?

它会下载 M3U8 播放列表的新副本以了解下一步。

如何强制浏览器连续获取视频块?

HLS 客户端知道刷新播放列表。还可以构建一个客户端来“知道”接下来会出现哪些细分市场。例如,如果您有一个顺序列表,则客户端没有理由一遍又一遍地请求播放列表。

顺序播放列表在负缓存方面存在一些问题。如果您使用 CDN,请关闭对任何不正常响应的缓存,因为有人可能会在准备好之前访问您的分段 URL,导致您的 CDN 认为它们永远不会存在。

© www.soinside.com 2019 - 2024. All rights reserved.