如何在中途启动未缓冲的视频流

时间:2016-06-02 10:37:06

标签: http video youtube

我最近在YouTube上播放了一个视频,我想到了一个想法。在播放视频时,用户可以在视频中向前跳过,视频会在此时恢复,而不会有任何问题。

我似乎无法找到它是如何工作的,我知道当我通过HTTP请求文件时它会下载整个内容,因此使用HTTP似乎无法在视频中途启动二进制流。有没有关于浏览器如何做到这一点的RFC或相关文档?

谢谢

2 个答案:

答案 0 :(得分:2)

有几种不同的技术,但它们基本上都允许您在视频中特定偏移,然后下载一个''从那里。

执行此操作的简单方法是使用字节范围和HTTP渐进式下载0有一个RFC涵盖了这个:

类似但稍微复杂的机制背后是各种自适应比特率协议,例如HLS,MPEG-DASH,平滑流等。这些协议将视频分成多个块(例如10秒长段)并且还以不同的比特率创建几种不同的视频编码。

然后,客户端可以根据当前的网络条件请求下一个块 - 如果网络繁忙,或者客户端正在使用低带连接,它可以从视频的低比特率编码请求下一个块。如果网络连接得到改善,那么它可以逐步提高比特率,直到达到最大值。

如果您查看书呆子的统计信息,您可以看到这一点。如果您右键单击视频,则可在YouTube中使用 - 查看连接速度图表。

这种机制还意味着客户端可以比视频中的当前位置更进一步(或后面)请求块 - 只要它显然不是活的!

如果您确实可以快速启动,因为播放可以从较低的比特率开始,这样可以更快地下载并再次升级到更高的比特率。你可以在玩Netflix这样的服务时经常看到这一点 - 如果你向前跳,它可能会在最初的一段时间内降低质量。

答案 1 :(得分:0)

YouTube将视频存储在多个块中。一旦每个块完成下载,您就可以播放该块视频。将它们视为单独的分割视频。

当你试图跳到中间时,他们将开始下载必要的视频块并开始播放。因此,你可以跳到中间。

相关问题