![image](https://hackmd.io/_uploads/Skrb1I3Qkg.png) ### 直播串流的挑戰與基礎概念 - 直播串流需即時處理影音內容,延遲需控制在數十秒或更低。 - 挑戰包含高效能的影音處理需求與影音資料量大的網路傳輸耗時。 ![CleanShot 2024-12-03 at 17.34.10](https://hackmd.io/_uploads/SJgix8nm1e.png) ![CleanShot 2024-12-03 at 17.35.08](https://hackmd.io/_uploads/SJ0AlI3Xke.png) --- ### 影音來源與編碼 ![CleanShot 2024-12-03 at 17.35.45](https://hackmd.io/_uploads/ryS--LhQke.png) ![CleanShot 2024-12-03 at 17.36.05](https://hackmd.io/_uploads/ByXzZ827Jl.png) - 影音來源包括攝影機、麥克風或其他設備。 - 常用編碼軟體有 OBS(開源)及平台內建工具(如 YouTube 瀏覽器直播)。 - 編碼器的功能是將影音資料封裝並使用適合的傳輸協議。 - 主流傳輸協議包括 RTMP(Real-time Messaging Protocol)、RTMPS(加密版)及 SRT(Secure Reliable Transport)。 --- ### 傳輸與點對點伺服器 ![CleanShot 2024-12-03 at 17.36.40](https://hackmd.io/_uploads/H1FV-InQkg.png) - 直播平台提供全球多個接入點伺服器(Point-of-Presence, POP)。 - 直播主會自動連接至最近的 POP 伺服器,常用技術有 DNS 延遲路由和 Anycast 網路。 - POP 伺服器透過快速骨幹網路將串流傳輸至平台伺服器。 --- ### 平台端處理:編碼與分段 - 平台的主要處理目標是提供多種畫質與比特率,滿足不同觀眾的網路條件。 - 轉碼(Transcoding)將輸入影音轉為多種畫質與比特率版本,需要高效能計算資源。 ![CleanShot 2024-12-03 at 17.37.05](https://hackmd.io/_uploads/Bk9LWL27Jx.png) - 分段(Segmentation)將轉碼後的串流分為數秒長度的片段。 ![CleanShot 2024-12-03 at 17.37.41](https://hackmd.io/_uploads/SkIO-U3Qyl.png) ![CleanShot 2024-12-03 at 17.38.00](https://hackmd.io/_uploads/BkSFWInQ1x.png) - 常見串流格式有 HLS(HTTP Live Streaming)和 DASH(Dynamic Adaptive Streaming over HTTP)。 ![CleanShot 2024-12-03 at 17.38.28](https://hackmd.io/_uploads/rk-iZI371l.png) --- ### 分發與觀眾播放 ![CleanShot 2024-12-03 at 17.39.02](https://hackmd.io/_uploads/BJNT-I3X1g.png) - CDN 快取可減少最後一哩延遲。 - 適應性串流根據網路狀況選擇畫質與比特率,動態調整避免播放卡頓。 - 正常「玻璃到玻璃」延遲約為 20 秒。 ![CleanShot 2024-12-03 at 17.39.32](https://hackmd.io/_uploads/ry7yM8hmJx.png) ![CleanShot 2024-12-03 at 17.39.59](https://hackmd.io/_uploads/HJngM8hQ1x.png) --- ### 低延遲優化 - 平台提供互動性調整選項,允許直播主在延遲與畫質間進行選擇。 - 直播主應優化本地設備,如攝影機和網路,以降低延遲。 # Terminology - **玻璃到玻璃延遲(Glass-to-Glass Latency)**:從視頻信號源到觀眾屏幕的整體延遲時間,通常在20秒左右。 - **即時通訊協議(RTMP, Real-Time Messaging Protocol)**:一種基於TCP的協議,用於將編碼後的視頻流傳輸到流媒體平台。 - **安全即時通訊協議(RTMPS)**:RTMP的安全變體,通過SSL/TLS加密數據傳輸。 - **安全可靠傳輸協議(SRT, Secure Reliable Transport)**:一種基於UDP的協議,具備低延遲和對網路差異的高容錯能力。 - **編碼器(Encoder)**:將視頻和音頻數據打包並傳輸至流媒體平台的設備或軟體,如OBS Studio。 - **任務點(Point-of-Presence Server)**:平台在全球部署的服務器,用於接收並中繼來自主播的視頻流。 - **DNS延遲路由(DNS Latency-Based Routing)**:根據延遲情況自動選擇最佳服務器的技術。 - **任播(Anycast Network)**:一種網路技術,允許多個服務器共用相同的IP地址,根據距離或延遲自動路由。 - **自適應比特率串流(Adaptive Bitrate Streaming)**:根據觀眾網路狀況動態調整視頻質量和比特率的技術。 - **視頻轉碼(Transcoding)**:將輸入視頻流轉換為多種分辨率和比特率的處理過程。 - **分段(Segmentation)**:將視頻流分割成幾秒長的小視頻片段,以便適應流媒體格式的過程。 - **HLS(HTTP Live Streaming)**:由Apple發明的一種流媒體格式,包括清單文件和視頻片段。 - **清單文件(Manifest File)**:HLS或DASH流中的目錄文件,指引播放器加載視頻片段。 - **CDN(Content Delivery Network)**:內容分發網絡,用於緩存視頻流的清單和片段以降低延遲。 - **DASH(Dynamic Adaptive Streaming over HTTP)**:另一種常見的流媒體格式,但不被Apple設備原生支持。 - **視頻打包(Packaging)**:將轉碼後的視頻分段封裝成播放器可解析的流媒體格式。 - **骨幹網(Backbone Network)**:用於在平台內部高速傳輸視頻流的主要網絡基礎設施。 - **流媒體平台(Streaming Platform)**:提供主播和觀眾之間視頻傳輸服務的平臺,如YouTube和Twitch。 - **互動性(Interactivity)**:直播過程中觀眾和主播之間的即時反應程度,會影響整體延遲和視頻質量。 - **視頻品質(Video Quality)**:直播視頻的清晰度和流暢性,取決於分辨率、比特率和轉碼精度。