一. 因特网视频
视频
- 定义:一系列以恒定速率(如每秒24或30张图像)来展现的图像。
- 特点:可以被压缩(因而可以用比特率1来权衡视频质量)
一幅未压缩,数字编码的图像由像素阵列组成,其中每个像素是用来表示颜色和亮度的比特编码。
- 比特率与音、视频压缩的关系:比特率越高,传送数据速度越快,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。
- 例如:低质量视频:100kbps;流式高分辨率电影:超过3Mbps;用于4K流式展望的超过10Mbps。
视频流
视频流是指将视频数据以流的形式进行传输。这种传输方式可以实时观看视频内容,而不需要等待整个视频文件下载完成
。视频流技术使用了流媒体协议,例如HTTP Live Streaming(HLS)和Real-time Messaging Protocol(RTMP)等,使得视频可以在各种设备上流畅播放。视频流技术广泛应用于在线视频播放、直播、视频会议等领域。
流式视频
- 定义:
流式视频是指在数据通过互联网到达计算机的同时在显示器上播放的网络视频。与可下载的互联网视频不同,流媒体形式在收到压缩数据后即开始播放,从而消除了下载时可能伴随病毒的担忧。但是,由于视频在接收数据时播放,视频可能会被慢速连接中断,并可能会自动暂停并重新启动,以尝试"缓冲"数据。此外,与可下载视频不同,流式视频不会"保留"在计算机上;只有当主网站决定继续发布视频时,才可以访问流式视频到网站。
因此,视频流是一种传输方式,而流式视频是一种播放方式。视频流可以以流式视频的方式进行播放,而流式视频必须使用视频流技术进行传输
。
- 性能度量:平均端到端吞吐量
平均端到端吞吐量是指单位时间内成功地传送数据的数量,也就是传输速率。吞吐量和带宽是两个不同的概念,带宽是指链路的能力,单位是比特每秒(bps),是设计值;而吞吐量是实际测试的传输速率,单位也是bps。平均端到端吞吐量通常用来衡量网络传输性能,可以通过网络延迟、传输速度等指标来评估。
- 例子:使用流式视频的公司:Netflix,YouTube(谷歌),亚马逊和优酷等。
二. HTTP流和DASH
2.1 HTTP流
- 定义:
HTTP流(HTTP streaming)是一种在HTTP协议下进行实时数据传输的技术。它允许服务器将数据以流的形式发送给客户端,而无需等待整个响应完全生成。这种方式可以实现实时性要求较高的应用,如视频直播、音频流传输等。HTTP流可以通过多种方式实现,包括长轮询、服务器推送事件(Server-Sent Events)和WebSocket等。这些技术都允许服务器主动向客户端发送数据,而不需要客户端主动请求。HTTP流的实现可以提供更好的用户体验和更高效的网络通信。 - 特点:
在HTTP流中,视频只是存储在HTTP服务器中作为一个普通文件,每个文件有一个特定的URL - HTTP流播放视频的工作原理:
- 1.客户端发起请求
客户端使用HTTP协议向服务器发起视频播放请求(TCP连接)。请求中通常包含视频的URL或其他必要的参数。
- 服务器响应
服务器接收到客户端的请求后,开始准备视频数据。服务器使用一种支持流式传输的视频格式,如MPEG-DASH(Dynamic Adaptive Streaming over HTTP)或HLS(HTTP Live Streaming)。
- 客户端接收和播放
客户端接收的视频字节被收集在应用缓存中,当缓存中的字节数量超过设定门限时,客户应用程序开始播放。特别的,流式视频应用程序周期性的从客户应用程序缓存中抓取帧,对这些帧解压缩并呈现在用户屏幕上,因此,流式视频应用接收到视频就开始播放,同时缓存视频后面部分的帧。
通过以上步骤,HTTP流播放视频实现了实时的视频传输和播放。这种方式可以根据网络条件和设备性能进行自适应调整,提供更好的观看体验。同时,使用分段传输的方式,可以在保证视频连续播放的同时,提高网络传输的效率。
- 缺点:尽管对不同客户或相同客户的不同时间而言,可用带宽大小不同,但是所有用户接收到相同编码的视频。(这导致了新型的基于HTTP流的研发,即DASH)
2.2 DASH
DASH(Dynamic Adaptive Streaming over HTTP)(基于 / 经HTTP的动态适应性流)
使用DASH后,每个视频版本存储在HTTP服务器,每个版本都有一个不同的URL
- 特点:
- 在DASH中,视频编码分为几个不同版本,每个版本具有不同比特率,对应不同的质量水平。
- 客户请求:客户端动态地请求来自不同版本且长度为几秒的视频数据块。
使用HTTP GET请求报文一次选择一个不同的块
。 - 带宽与版本:
- 带宽较高时:高速率的版本块
- 带宽较低时:低速率的版本块
- 带宽变化适应性:如果端到端的带宽在会话过程中发生改变,DASH允许客户适应可用带宽。(例如:当移动用户相对基站移动时,能感觉到带宽波动。)
- 告示文件:
- 总述
三. 内容分发网CDN
对于一个因特网视频公司提供流式视频服务最直接的方法或许时建立一个单一的大规模数据中心,存储所有视频,并向全世界范围客户传输流式视频。
但存在三个问题:
1.出现停滞时延的可能性随中间通信链路数量增加而增加。
2.流行的视频可能经过相同通信链路多次发送,导致网络带宽的浪费和公司需要给ISP的费用增加
。
3.单点故障。数据中心崩溃则无法发送视频。
3.1 CDN
- 定义:
内容分发网 (CDN : Content Delivery Network)是一种分布式网络系统,通过将内容缓存到多个地理位置和服务器上,以提高网站或其他互联网应用的性能和可靠性。 - 分类:
专用CDN,由内容提供商自己所有。例如,谷歌的CDN分发YouTube视频和其他类型内容。
第三方CDN,代表多个内容提供商发表内容。 - CDN的工作原理:将网站的内容分发到靠近用户的地方,以便用户可以快速获取所需的内容。这可以通过将内容存储在分布在全球的各个节点上实现。
当用户请求网站内容时,CDN会根据用户的地理位置和网络条件选择最合适的节点将内容传递给用户
。 - CDN的主要优点包括:
性能提升:CDN可以将内容存储在靠近用户的地方,从而减少内容的传输延迟和网络拥塞,提高用户访问网站的速度和性能。 可靠性增强:CDN可以通过多个节点同时提供内容,如果某个节点出现故障或网络故障,其他节点可以自动接替, 确保用户可以继续访问网站。 安全性提高:CDN可以提供DDoS攻击防护、CC攻击防护等安全服务,保护网站免受网络攻击。 节省成本: 使用CDN可以减少服务器负载和带宽成本,提高网站的成本效益。
CDN被广泛用于各种互联网应用,如网站、视频流媒体、游戏等,可以提高用户体验和网站性能。
- 服务器安置原则
- 深入
- 邀请做客
3.2 CDN操作
客户端使用浏览器指令检索特定视频(由URL标识)时,
CDN必须截获该请求以便能够:
1.确定适合的CDN服务集群。
2.将 客户请求重定向到该集群某台服务器。
大多数CDN利用DNS来截获和重定向请求。如下图示:
- 1.用户访问目标URL的网页
- 2.用户主机发送DNS请求
- 3.本地DNS服务器(LDNS)把DNS请求中继给权威服务器,并得到一个KingCDN域的主机名
- 4.LDNS发送第二个请求,发送对象为3步骤得到的主机名,并得到IP地址
- 5.LDNS向转发内容服务CDN的IP地址
- 6.客户接受到IP后创建TCP连接,并发送HTTP GET请求。
3.3 集群选择策略
CDN的集群选择策略是CDN部署的核心之一,目的是将客户定向到CDN中某个服务器集群或数据中心的机制。常见的集群选择策略包括:
地理最近策略:指派客户到地理上最为临近的集群,这种选择策略忽略了时延和可用带宽随因特网路径时间而变化,总是为特定的客户指派相同的集群。 实时测量策略:基于集群和客户之间的时延和丢包性能执行周期性检查,这种策略可以实时测量集群和客户之间的网络路径,并根据测量结果选择最优的集群。
此外,还有其他集群选择策略,如基于负载均衡的策略、基于DNS解析的策略等。总之,CDN的集群选择策略是为了提高网站的性能和可靠性,根据不同的因素选择最优的集群,并提供更好的用户体验。
- 比特率是指每秒传送的比特数,单位为bps(Bit Per Second)。表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。 ↩︎