现在大家看在线视频、直播、视频通话都很顺畅,但很少有人想过,一段几GB的高清视频是怎么通过网络流畅传到你手机上的。网络视频传输是一整套技术的组合,涉及视频压缩、封装、传输协议、CDN分发等多个环节。今天帮大家把这个链路理一理。
视频传输的第一步是压缩。原始视频数据量太大,一个1080P的视频每秒就要几百MB,根本没法在网络上传输。所以必须用视频编码技术压缩。常用的编码标准有H.264、H.265、AV1。H.264是目前最通用的,兼容性最好;H.265压缩率更高,同样画质体积能小一半;AV1是新一代开源编码,免专利费,压缩率比H.265还高。编码的核心思路是利用空间冗余、时间冗余和视觉冗余,去掉人眼不敏感的信息。
压缩后的视频流要封装成容器格式,方便传输和播放。常用的容器格式有MP4、FLV、TS、WebM。MP4是最通用的,几乎所有设备都支持。FLV以前是Flash时代的主流,现在逐渐被淘汰。TS(Transport Stream)是流媒体直播常用的格式,它把视频切成一个个小片段,每个片段独立可解码,丢了一个不影响后面。WebM是Google推的开源格式,主要搭配VP9或AV1编码。
传输协议是视频从服务器到播放器的"运输方式"。早期的视频传输用HTTP渐进式下载,就是整个MP4文件边下边播,缺点是不能跳转、不能自适应码率。现在主流的流媒体协议有HLS、DASH、RTMP。HLS是苹果推的,把视频切成TS片段,用M3U8索引文件管理,支持自适应码率,兼容性好但延迟较高(一般10秒以上)。DASH跟HLS类似,是国际标准,支持更多编码格式。RTMP是Adobe的协议,延迟低(1到3秒),以前是直播的主流,但需要Flash支持,现在逐渐被WebRTC和SRT取代。
直播对延迟要求高,常用RTMP、WebRTC、SRT这些低延迟协议。RTMP基于TCP,延迟1到3秒,但需要专门的服务器。WebRTC是浏览器原生支持的实时通信协议,延迟可以做到1秒以内,适合互动直播。SRT是基于UDP的协议,抗丢包能力强,适合弱网环境下的直播。现在很多直播平台用RTMP推流、HLS拉流的组合,兼顾推流稳定性和播放兼容性。
CDN(内容分发网络)是视频传输的"加速器"。视频服务器一般在少数几个机房,如果用户都去那里取视频,服务器会扛不住。CDN把视频缓存到全国各地的边缘节点,用户访问时从就近的边缘节点取数据,速度快、延迟低。CDN还要处理负载均衡、防盗链、转码等任务。大的视频平台会同时用多家CDN,根据用户位置和网络情况智能调度。
视频传输的质量受很多因素影响:网络带宽、延迟、丢包率。播放器会根据网络情况自适应切换码率,网络好的时候看1080P,网络差的时候自动降到720P甚至480P,保证不卡顿。这个自适应功能靠流媒体协议的多码率支持实现。未来随着5G和千兆宽带的普及,4K甚至8K在线视频会越来越多,对视频压缩和传输技术的要求也会越来越高。
下一篇:没有了