串流是一種無需實際下載媒體檔案即可觀看視訊或收聽音訊內容的方法。如果檔案擁有者使用 CDN,則可以提高串流效能並減少緩衝時間。
閱讀本文後,您將能夠:
複製文章連結
最初的網站是簡單的文字頁面,可能包含一兩張影像。但如今,只要網際網路連線速度足夠快,任何人都可以透過網際網路觀看高畫質電影或進行視訊通話。正是由於一種稱為串流的技術,這才成為可能。
串流是將音訊或視訊檔案從伺服器連續傳輸到用戶端。簡單來說,串流就是消費者在網際網路連線裝置上看電視或收聽播客時發生的事情。透過串流,正在用戶端裝置上播放的媒體檔案被遠端儲存,並透過網際網路一次傳輸幾秒鐘。
串流是即時的,比下載媒體檔案更高效。如果下載了視訊檔案,整個檔案的複本將儲存到裝置的硬碟上,並且在整個檔案下載完成之前無法播放視訊。如果它是串流,瀏覽器會播放視訊而不實際複製和儲存它。視訊一次載入一點點,而不是一次載入整個檔案,並且瀏覽器載入的資訊不會本機儲存。
想一想湖泊和溪流之間的區別:兩者都含有水,溪流可能含有與湖泊一樣多的水;不同之處在於,對於溪流,水不會同時全部出現在同一個地方。下載的視訊檔案更像是一個湖泊,因為它會佔用大量的硬碟空間(移動一個湖泊需要很長時間)。串流處理視訊更像是一條小溪或一條河流,因為視訊資料不斷、快速地流向使用者的瀏覽器。
就像透過網際網路傳送的其他資料一樣,音訊和視訊資料被分解為封包。每個封包都包含一小部分檔案,用戶端裝置上瀏覽器中的音訊或影片播放程式接收封包流並將其解譯為視訊或音訊。
有些串流方法使用 UDP,有些使用 TCP。UDP 和 TCP 是傳輸通訊協定,這意味著它們用於跨網路移動資料封包。兩者都與網際網路通訊協定 (IP) 搭配使用。TCP 會在傳輸資料之前開啟一個專用連線,它確保所有資料封包按順序到達。與 TCP 不同,UDP 不做這些事情。因此,TCP 更可靠,但透過 UDP 傳輸資料要比透過 TCP 傳輸更快,只是在此過程中會丟失一些封包。
如果說 TCP 是一種要求收件人簽收的包裹派送服務,那麼 UDP 則會將包裹留在前門廊,不會敲門要求收件人簽收。TCP 派送服務丟失的包裹更少,但是 UDP 派送服務更快,因為即使沒有人在家簽收,它也可以投遞包裹。
對於串流,在某些情況下,速度遠比可靠性重要。例如,如果有人在進行視訊會議,他們更願意與其他與會者即時互動,而不是坐著等每一個資料位元傳遞。因此,丟失一些資料封包並不是什麼大問題,此時應使用 UDP。
在其他情況下,可靠性對於串流更為重要。例如,HTTP 即時串流 (HLS) 和 MPEG-DASH 都是使用 TCP 進行傳輸的串流通訊協定。許多點播視訊服務使用 TCP。
資料流媒體播放程式會提前載入幾秒鐘的資料流,以便在連線短暫中斷時能夠繼續播放影片或音訊。這稱為緩衝。緩衝確保影片可以流暢地連續播放。但是,在連線速度較慢的情況下,或者如果網路存在大量延遲,影片可能需要很長時間緩衝。
串流與其他類型的 Web 內容一樣,會遇到相同類型的延遲和效能下降。由於串流內容儲存在別處,因此託管位置會有很大的影響,就像透過網際網路存取任何類型的內容一樣。如果紐約的使用者試圖從洛斯蓋多斯的 Netflix 伺服器串流內容,則影片內容必須跨越 3,000 英里才能到達使用者處,並且影片將不得不花費很長時間緩衝甚至可能根本無法播放。出於這個原因,Netflix 和其他串流提供者廣泛使用分散式內容傳遞網路 (CDN),將內容儲存在世界各地離使用者更近的位置。
CDN 對串流效能有著巨大的積極影響。Cloudflare Stream 利用 Cloudflare CDN 將影片內容快取在全球各地的所有 Cloudflare 資料中心中並從中提供該內容,由此縮短了影片啟動時間延遲並減少了緩衝時間。