流式下載,又稱流式傳輸,是一種在網絡上播放媒體文件的技術。在這種技術中,媒體文件不是一次性下載完成后再播放,而是邊下載邊播放,從而實現了即時播放的效果。
技術原理
緩存系統
流式傳輸的實現需要緩存系統。互聯網是以包傳輸為基礎的異步傳輸,對于實時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