跳至正文

探索一個簡單的視訊串流服務架構

  • **視訊串流服務是指即時傳輸視訊數據的服務。 ** 由於這些服務即時傳輸視訊數據,因此需要技術來即時壓縮和傳輸數據。這些技術包括視訊擷取、壓縮、編碼、解碼和播放。
  • Netflix、Disney+、YouTube 和 Twitch 等服務是提供影片串流服務的服務。這些服務被世界各地的許多用戶使用並處理大量資料。由於網路的發展,串流媒體服務越來越先進,提供4K、8K等高畫質視訊的服務也不斷出現。
  • 我對這些服務的結構很好奇,所以讓我們來看看一個簡單的視訊串流服務架構。根據服務的不同,它有不同的結構,但這次我們將看看一個簡單的視訊串流服務架構。
    • 實際服務要複雜得多,並且使用多種技術,因此僅供參考。

視訊串流服務架構

  • 下面是一個簡單的視訊串流服務架構。
  • **視訊串流服務主要由發送視訊資料的SendDevice、在伺服器上處理視訊資料的Server和接收視訊資料的WatchDevice組成。
  • 每個角色都執行以下角色。
    • **SendDevice:負責擷取和壓縮視訊資料。
    • **伺服器:負責處理和傳輸視訊資料。
    • **WatchDevice:負責從伺服器接收並播放視訊資料。

視訊串流服務架構圖

發送設備

  • 在 Youtube 或 Twitch 等服務上進行廣播時,SendDevice 可以是廣播使用者的電腦或行動裝置。
  • **SendDevice負責擷取和壓縮視訊資料。 ** 在這種結構中,擷取和壓縮視訊資料的過程就是即時處理視訊資料的過程,因此需要高速和穩定。
  • **視訊資料在發送到伺服器之前進行壓縮的原因是為了節省網路頻寬。由於視訊資料是影像資料的延續,因此壓縮影像資料可以節省頻寬。
    • 使用H.264、H.265等視訊壓縮編解碼器和AAC、MP3等音訊壓縮編解碼器壓縮視訊資料。
  • 在SendDevice中,壓縮視訊資料被傳送到伺服器。
    • 但是,在某些情況下,SendDevice 會在不壓縮的情況下將視訊資料傳輸到伺服器。在這種情況下,需要在伺服器上進行額外的視訊資料壓縮處理。

伺服器

  • **伺服器負責處理和傳輸視訊資料。 ** 伺服器接收視訊數據,處理它,並將其傳輸給WatchDevice。
  • 伺服器可能由一台伺服器或多台伺服器組成。大規模服務由多台伺服器組成。
  • 預先準備540p、720p、1080p、4K等各種解析度的視訊數據,並根據使用者請求傳輸適當解析度的視訊資料。
    • **必須根據使用者的網路條件傳輸適當解析度的視訊資料。
    • 如果根據用戶的請求傳輸適當解析度的視訊數據,用戶可以快速觀看影片。
    • **根據使用者要求傳輸適當解析度的視訊資料的過程稱為自適應位元速率串流。
  • 伺服器接收並處理視訊資料如下。
    • **執行接收視訊資料並將其分成片段的過程。
      • 段是分割和傳輸視訊資料的單位。 Segment被分成一定的長度並發送,WatchDevice接收並播放這些Segment。
      • 將原輸入的視訊資料分成片段的過程稱為分段。
      • 分段使用 HTTP Live Streaming (HLS) 或 MPEG-DASH 等協定進行傳輸。
      • 如果不分割視訊數據,用戶將無法快速播放影片。分段傳輸可以讓使用者快速播放影片。
    • **將片段傳送到 CDN。
      • CDN 代表內容傳遞網路。
      • CDN由分佈在世界各地的伺服器組成,可以快速地將內容傳送給使用者。

手錶設備

  • **WatchDevice 負責從伺服器接收並播放影片資料。
  • WatchDevice 從 CDN 接收片段並播放它們。片段是分成一定長度的影片資料。片段使用 HTTP Live Streaming (HLS) 或 MPEG-DASH 等協定進行傳輸。
  • WatchDevice 接收該片段,對其進行解碼並播放。解碼是指對視訊資料進行解碼的過程,播放是指將視訊資料顯示在螢幕上的過程。