流式下载,又称流式传输,是一种在网络上播放媒体文件的技术。在这种技术中,媒体文件不是一次性下载完成后再播放,而是边下载边播放,从而实现了即时播放的效果。
技术原理
缓存系统
流式传输的实现需要缓存系统。互联网是以包传输为基础的异步传输,对于实时A/V源或存储的A/V文件,它们会被分解为许多包并通过网络传输。由于网络是动态变化的,各包选择的路由可能不同,因此到达客户端的时间延迟也可能不同,甚至可能出现先发的数据包后到的情况。为了弥补延迟和抖动的影响,并确保数据包的顺序正确,使得媒体数据能够连续输出,而不因网络暂时拥塞而导致播放中断,使用缓存系统是非常必要的。通常情况下,高速缓存所需的容量并不大,因为它使用环形链表结构来存储数据,通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。
传输协议
流式传输的实现还需要合适的传输协议。由于TCP需要较多的开销,因此不太适合传输实时数据。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时声音数据。流式传输的过程通常是这样的:用户选择某一流媒体服务后,Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输的实时数据从原始信息中检索出来;然后客户机上的Web浏览器启动A/VHelper程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V数据的编码类型或与A/V检索相关的服务器地址。A/VHelper程序及A/V服务器运行实时流控制协议(RTSP),以交换A/V传输所需的控制信息。与CD播放机或VCRs所提供的功能相似,RTSP提供了操纵播放、快进、快倒、暂停及录制等命令的方法。A/V服务器使用RTP/UDP协议将A/V数据传输给A/V客户程序(一般可认为客户程序等同于Helper程序),一旦A/V数据抵达客户端,A/V客户程序即可播放输出。
多种传输方式
流式传输可以通过多种方式进行,包括实时流式传输和顺序流式传输。实时流式传输适用于现场直播或其他需要实时观看的场景,而顺序流式传输则更适合高质量的短片段,如片头、片尾和广告。这两种传输方式各有优劣,具体选择取决于应用场景和用户需求。
应用与发展
随着互联网接入速率和技术的发展,流式传输的应用越来越广泛。早期的流式传输技术主要是为了适应低速调制解调器的连接,而现在,随着宽带接入的普及,流式传输技术也在不断发展,以适应更高品质的媒体内容传输需求。智能流技术的出现,使得流式传输能够在不断变化的网络条件下,自动调整传输速率,以确保用户获得最佳的观看体验。
参考资料
流式下载与一次性下载:深入理解数据获取方式.CSDN博客.2024-11-02
流式传输.流式传输.2024-11-02
前端使用StreamSaver.js流式下载大文件.博客园.2024-11-02