帶貨直播這么流暢,原來是這套技術系統在支撐!
1.引言
Hi,大家好,我是你們的小米,今天要跟大家聊聊 社區直播帶貨的直播流程,這個流程看似簡單,但其實背后有著許多復雜的技術支撐,今天我們就來拆解一下其中的關鍵點,讓大家對直播背后的技術有個更清晰的了解!
2.直播端使用 RTMPS 協議發送直播流數據到 POP 內的就近代理服務器
直播的第一步,就是主播在直播設備上把視頻和音頻流推送出去。為了保證數據傳輸的安全性,我們會用到 RTMPS 協議。
什么是 RTMPS?
RTMPS 是 Real-Time Messaging Protocol Secure 的縮寫,它是在 RTMP(實時消息傳輸協議)基礎上加入了 SSL/TLS 加密層,使得數據在傳輸過程中更加安全。因為直播過程中,用戶的個人信息、支付信息等都涉及到隱私和敏感數據,用加密協議能夠避免信息被攔截或者篡改。
發送到哪里呢?
RTMPS 協議的直播流會被發送到 POP(Point of Presence) 內的就近代理服務器。POP 就是互聯網骨干網絡中的一個節點,代理服務器的主要職責是盡可能靠近用戶和主播,減少數據傳輸中的延遲,從而保證觀眾看到的直播更加實時。
簡而言之:主播用 RTMPS 把加密的直播流發到離他最近的代理服務器,代理服務器會盡量減少延遲,提升直播的體驗。
3.代理服務器轉發直播流數據到數據中心的網關服務器(443轉80)
代理服務器拿到直播流后,會把這些數據轉發到位于數據中心的網關服務器。這里有個小細節需要注意,那就是端口的轉換。
端口號的秘密
RTMPS 傳輸數據時默認使用 443 端口,這是因為 443 是 SSL/TLS 加密數據的默認端口。但我們的數據中心網關服務器為了兼容一些場景,會將 443 端口的數據轉換成 80 端口。80 端口是 HTTP 服務的默認端口,通常用于未加密的數據傳輸。
這一轉換有助于讓我們的服務器在不同的場景中都能正常工作,比如在某些特定網絡環境下,80 端口可能更加順暢。
總結一下:代理服務器將加密的直播流數據從 443 端口轉發給網關服務器,網關服務器再將數據轉換為 80 端口來進行后續處理。
4.網關服務器使用直播 ID 的一致性哈希算法發送直播數據到指定的編碼服務器
接下來,網關服務器收到數據后,使用一種叫 一致性哈希算法 的方法來決定這些直播數據該被發送到哪臺編碼服務器。
什么是一致性哈希算法?
一致性哈希算法是一個分布式系統中常用的負載均衡算法。通過把直播的 直播 ID(即每個直播的唯一標識)映射到一個哈希環上,可以保證直播數據總是被發送到同一個編碼服務器。這樣,即使服務器數量發生變化,也能確保數據被均勻分布,并且不會因為服務器數量的增加或減少導致大規模的重新分配。
簡單來說,一致性哈希算法能夠幫助我們找到最合適的服務器來處理每場直播,保證穩定性和性能。
直播流到達編碼服務器后,編碼服務器會承擔一系列的工作,可以說這一步是整個直播過程中非常重要的環節。我們來看一下編碼服務器都做了哪些工作吧!
4.驗證直播數據格式是否正確
首先,編碼服務器要做的第一件事就是 驗證直播數據的格式,比如說視頻和音頻的編碼格式是否符合規定,直播數據的幀率、分辨率、比特率等參數是否在合理范圍內。
如果數據不符合標準,編碼服務器會立刻返回錯誤信息,通知直播端進行調整。這一步驟非常重要,因為如果數據格式有問題,觀眾在觀看直播時可能會出現畫面卡頓、音視頻不同步等問題。
5.關聯直播 ID 及編碼服務器第一映射
為了確保即使在網絡中斷或擴容等情況下,主播和觀眾依然能無縫地繼續直播,編碼服務器需要建立一個 映射關系。也就是說,它會把每個 直播 ID 和特定的編碼服務器進行綁定。
即使在某些情況下,主播的設備與服務器斷開了連接,重新連接時,依然會被指向同一個編碼服務器。這就是為什么你會發現斷流重連時,畫面流暢,觀眾甚至幾乎感覺不到中斷。
6.使用直播數據編碼成不同解析度的輸出數據
接下來就是編碼服務器的核心工作之一了:轉碼。
直播的數據往往需要適應不同觀眾的觀看環境,比如有人使用高速網絡,有人使用低速網絡,還有人用手機、平板或大屏幕電視觀看。因此,編碼服務器需要將直播數據轉換成不同的解析度和比特率,比如:720p、1080p、4K等。
這樣,無論觀眾用什么設備,網絡條件如何,編碼服務器都能根據需求推送最合適的版本,保證觀眾的觀看體驗。
7.使用 DASH 協議輸出數據并持久化存儲
最后一步,編碼服務器會使用 DASH(Dynamic Adaptive Streaming over HTTP) 協議將編碼后的數據輸出。DASH 是一種基于 HTTP 的自適應流媒體傳輸技術,它會根據觀眾的網絡狀況動態調整視頻質量,確保即使在網絡波動時,直播也能保持流暢。
同時,編碼服務器會把這些直播數據 持久化存儲,這樣就能實現直播的回放功能。觀眾在直播結束后,依然可以查看之前的直播內容,形成更多的互動機會和增值內容。
END
好了,以上就是我們今天聊到的 社區直播帶貨的直播流程。從直播端推流到 POP 代理服務器,再到網關服務器的端口轉換與負載分配,最后經過編碼服務器的轉碼和輸出,這一系列的步驟保障了直播的高效和穩定。
直播帶貨不僅僅是主播和觀眾的互動,在這背后,其實有一整套復雜的技術架構在支撐著。這些技術確保了直播的流暢度、畫質以及數據的安全性,讓大家在看直播時體驗更好,也讓帶貨的效果更加顯著。