我小時候,娛樂的主要方式都是看電視,現在由於智慧手機的普及,大家的主要娛樂方式也慢慢發生了變化,直播成為了大家常用的娛樂方式。不禁平臺眾多,像快手、西瓜視訊、抖音、虎牙鬥魚各大直播網站,內容也非常豐富,除了遊戲、運動、戶外,甚至還有直播睡覺,寫程式碼的。那麼,這些形形色色的直播,是如何到我們手機上的呢?
主播一個直播,大致可以分成3部分,第一部分是主播的部分,主播,很明顯,就是要進行原始影象跟聲音的一些採集。當採集完主播的影象跟聲音後,會對這些進行編碼,然後才上傳給伺服器。畢竟原始的影象可能非常大,會佔用主播大量的頻寬,消耗主播大量的流量,所以,需要對影象跟聲音進行編碼壓縮。這是直播公司的一個核心技術,如果你當過主播,就會發現,家裡同樣的寬頻,怎麼有些平臺就卡了,有些平臺卻很很流暢。當視訊與音訊壓縮完成後,就會採用一定的協議,將資料上傳到伺服器後臺,我們稱之為推流。
伺服器伺服器接受到主播傳上來的視訊跟音訊,一般會先進行簡單的機器審查,保證視訊內容健康大方,之後,會再進行二次編碼。有些人可能會問,不是在主播的客戶端上面已經編碼了麼?怎麼又編碼了一次,這是因為編碼是一項極耗系統資源的工作,需要更強大的伺服器才能夠支援。另外,主播可能上傳的是藍光的視訊,伺服器需要轉成不同的清晰度給不同的觀眾。伺服器轉碼完成後,就等著觀眾過來拉取了,這個稱之為拉流。
觀眾觀眾從伺服器拉取到壓縮後的二進位制,開始在本地進行解碼,解碼完成後,就能夠看到精彩的視訊與音訊。我們在觀看直播的時候,經常有不同的線路可以選擇,這是什麼意思呢?原來是如果所有的人都到後臺去拉取資料,那麼,伺服器的壓力會非常大。通常,伺服器會先把資料分發到各個邊緣節點,例如CDN,使用者直接去CDN拉取資料,減少伺服器的壓力。我們在直播頁面選擇不同的線路,通常就是切換不同的CDN。