2024年5月20日 星期一

★ 什麼是即時串流?即時串流如何運作

 
直播平台如何運作? (YouTube 直播、Twitch、TikTok 直播)


Klacci 凱樂奇 iF-R 讀頭門禁系統可以這麼小。 iF-R 讀卡器越來越多地擴展了 iF 系列智能非接觸式鎖的適用性。


CLOUDFLARE


什麼是即時串流?

串流是人們在網際網路上觀看影片時,使用的資料傳輸方法。這是一種一次交付少許視訊檔案的方式,通常是從遠端儲存位置進行。透過一次在網際網路上傳輸幾秒鐘的檔案,用戶端裝置不必在開始播放之前下載整個影片。

即時串流是指串流視訊,是透過網際網路即時傳送的,無需先進行錄製和儲存。如今,電視廣播、視訊遊戲串流和社交媒體視訊,都可以即時串流。

常規串流和即時串流之間的區別,可以比作演員背誦獨白和即興演講之間的差別。在前者中,內容是預先建立的,儲存下來並轉播給觀眾。在後者中,觀眾在演員建立內容的同時收到內容,就如在即時串流中一樣。

「即時串流」一詞通常是指廣播即時串流即同時傳給多個使用者的一對多連線。Skype、FaceTime 和 Google Hangouts Meet 等視訊會議技術,採用的是即時通訊 (RTC) 通訊協訂,而不是一對多即時串流廣播所使用的通訊協定。

在技術層面上,即時串流如何運作?

如下是即時串流幕後發生的主要步驟:

  • 壓縮
  • 編碼
  • 分割
  • 內容傳遞網路 (CDN) 分發
  • CDN 快取
  • 解碼
  • 影像播放

影像擷取

即時串流始於原始視訊資料,即攝影機擷取的視覺資訊。在攝影機所連接的運算裝置中,此視覺資訊表示為數位資料 —— 換句話說,最深層次的 1 和 0。

壓縮和編碼

接下來,對分割的視訊資料進行壓縮和編碼。透過移除多餘的視覺資訊來壓縮資料。例如,如果視訊的第一幀顯示一個在灰色背景下講話的人,那麼任何具有同樣背景的後續幀無需轉譯這個灰色背景。

視訊壓縮可以比作在客廳中增添新傢俱。每次增添新椅子或茶几時,不需要購買一整套新傢俱。相反,房間佈局可以保持大致相同,並且一次只更改一件,偶爾根據需要進行較大的重新佈置。類似地,並不是視訊串流的每一幀都需要徹底重新轉譯,只有幀之間變化的部分,例如人物嘴巴的運動。

「編碼」是指將資料轉換為新格式的過程。即時串流視訊資料編碼為各種不同裝置可以辨識的可解譯數位格式。常見的視訊編碼標準包括:

  • H.264
  • H.265
  • VP9
  • AV1


分割

視訊包含許多數位資訊,這就是為什麼下載視訊檔案要比下載簡短的 PDF 或影像耗費更久的時間。由於一次將所有視訊資料透過網際網路傳送出去是不切實際的,因此串流視訊會分割成若干個幾秒長的小片段。

CDN 分發和快取

一旦即時串流完成分割、壓縮和編碼(所有過程僅需幾秒鐘),就需要將其提供給成千上萬想要觀看的觀眾。為了在最小延遲的同時保持高品質,並且將資料流提供給不同位置的多個觀眾,CDN 需要分發它。

CDN 是分散式伺服器網路,代表來源伺服器快取和提供內容。使用 CDN 可以實現更快的效能,因為使用者請求不再需要一路行進到來源伺服器,而是可以透過附近的 CDN 伺服器進行處理。以這種方式處理請求和交付內容,還可以減輕來源伺服器的工作量。最後,由於 CDN 伺服器遍佈世界各地,而不是聚集在單個地理區域內,CDN 可以高效地向全球的使用者提供內容。

CDN 還將快取(臨時儲存)即時串流的各個片段,因此大多數觀眾將從 CDN 快取而不是來源伺服器獲取即時串流。即使快取資料會延遲幾秒鐘,這實際上也使即時串流更接近於即時,因為它削減了來回於來源伺服器的來回時間 (RTT)

解碼和影片播放

CDN 將即時串流傳送給所有正在觀看資料流的使用者。每個使用者的裝置都接收、解碼和解壓縮分段的視訊資料。最後,使用者裝置上的媒體播放程式(專門的應用程式或瀏覽器內的影片播放程式)將資料解釋為視覺資訊,然後播放影片。

範例  

假設 Alice 在她的智慧型手機上開始即時串流,而住在該國另一邊的 Bob 在自己的智慧型手機上收看這一即時串流,同時觀看的還有 Alice 的另外幾十個朋友。Alice 將智慧型手機相機朝向自己並說「你好,世界!」,開始即時串流。需要經過哪些過程,視訊的「你好,世界!」部分才能到達位於該國另一邊的 Bob,以及觀看即時視訊的所有其他人那裡?

首先,Alice 的智慧型手機將對這小段視訊進行編碼和壓縮。如果 Alice 在她的廚房中拍攝即時視訊,則廚房牆壁將被記錄為視訊的第一幀,而後續的幀將忽略掉它,因為背景保持不變。

現在,Alice 正在使用的應用程式會將她說的「你好,世界!」進行編碼和壓縮,再傳送到該應用程式的 CDN。Bob 比較幸運,其中一台 CDN 伺服器距離他家只有幾英里遠,因此他的智慧型手機對即時串流第一部分的請求幾乎立即得到了答覆。其他即時串流觀眾經歷的延遲可能會比 Bob 多或少,具體取決於他們的地理位置。

Bob 的手機解碼視訊片段並重建壓縮資料,以便 Alice 的廚房牆壁出現在每一幀中。最後,Alice 在該國另一邊的廚房中說「你好,世界!」的幾秒之後,她的面容就會出現在 Bob 的智慧型手機上,而 Bob 也能看到和聽到她的問候了。

為什麼 CDN 對於即時串流很重要?

頻寬:網路上的任何給定點一次能夠通過的資料是有限的,這種度量稱為「頻寬」。如果資料串流到達網路上的某個點並且資料量超過了這個點的容量,這稱為「阻塞點」,因為資料傳送被阻塞並減慢了。阻塞點類似於當太多汽車試圖使用單車道道路時行駛減速的狀況。

如果串流的所有觀眾都從其原點獲取串流資料,則來源伺服器及其周圍的網路基礎結構將成為瓶頸,並且串流會變慢。但是,如果將 Stream Delivery 的主要負擔轉移到 CDN,則可以消除阻塞點。

全球內容傳遞:由於 CDN 分佈在世界各地,因此它們能夠將內容傳遞給全球受眾。紐約的來源伺服器無法將內容高效提供給米蘭的受眾,尤其是在交付視訊等重度內容的情況下。但是,CDN 可以從其網路上的任何點轉寄和提供內容,這樣在米蘭觀看紐約即時串流的人可以從米蘭的伺服器獲取串流資料,而不必等待它從紐約一路傳送過來。

縮短延遲和 RTT:使用 CDN 向全球傳遞內容可縮短 RTT(來回時間),從而減少即時串流觀眾的延遲。請求與回應的往返在距離和時間方面都更短,因為觀眾對即時串流的請求不再需要傳輸到串流的最初來源,串流資料也不再需要從原點開始傳輸。這縮短了延遲,並且有助於使即時串流保持更接近「即時」。

工作負載:回覆使用者的資料請求會使伺服器花費一些運算能力。回覆許多使用者的視訊資料請求可能會使一台伺服器不堪重負。CDN 使用成百上千台伺服器,這些伺服器可以承擔來源伺服器的大部分工作量,使它保持啟動並執行。

快取:CDN 會快取即時串流的每個視訊片段。然後 CDN 可以從快取傳遞片段,而不是從來源伺服器取得資料。

從快取提供即時串流似乎是一個矛盾:如果串流是即時的,那麼將它儲存下來並在幾秒後再傳遞又怎麼能加快速度?確實,快取的即時串流會落後於即時,但這仍然比一路直達來源伺服器要快。往返過程將花費很長時間,以至於串流會進一步滯後。藉助 CDN 快取,使用者可以體驗到最短的延遲時間。

Cloudflare 如何加快即時串流?

Cloudflare CDN 使用一種稱為同時串流加速的技術來加快即時 Stream Delivery。在視訊片段完全儲存在快取中之前,其他串流無法將這個視訊片段提供給多個使用者。但是,Cloudflare CDN 可以在載入的同時立即將這些片段直接提供給多個觀眾,從而為使用者節省寶貴的等待時間。瞭解有關同時串流加速的更多資訊



沒有留言:

張貼留言