@Dale-Lin
2023-03-13T22:01:10.000000Z
字数 656
阅读 202
HTTP
在 HTTP 流中,视频是存储在 HTTP 服务器中作为一个普通的文件,每个文件有一个特定的 URL。当用户观看视频时,客户和服务器建立一个 TCP 连接并发送该 URL 的 HTTP GET 请求,服务器则以底层网络协议和流量条件允许的尽可能快的速率,在一个 HTTP 响应报文中发送该视频文件。客户端将字节收集在应用缓存中,一但缓存中的字节数超过预先设定的门槛,客户应用程序就开始播放。流式视频应用周期性地从程序缓存中抓取帧,对这些帧解压,并在用户屏幕上展现。
对于相同客户的不同时间,用户可用的带宽大小有很大不同,这导致了一种新型基于 HTTP 流的研发,称为经 HTTP 的动态适应流(Dynamic Adaptive Streaming over HTTP,DASH)。在 DASH 中,视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。当可用带宽量较高时,选择高速率版本的块,反之选择低速率版本的块。客户端用 HTTP GET 请求报文一次选择一块。
可以通过客户缓存的视频数据量来粗略估算
DASH 允许客户使用不同的以太网速率流式播放不同比特率的视频。使用 DASH 后,每个视频版本存储在 HTTP 服务器中,每个版本都有一个不同的 URL。HTTP 服务器也有一个 manifest file,为每个版本提供了一个 URL 及其比特率。客户首先请求该 manifest 并得知各种版本。然后客户通过在 GET 请求报文中对每个块指定一个 URL 和一个字节范围,一次请求一个块。