抖音實(shí)時(shí)直播是怎么工作的?
直播不同于普通的流媒體,因?yàn)橐曨l內(nèi)容是通過(guò)互聯(lián)網(wǎng)實(shí)時(shí)發(fā)送的,延遲時(shí)間通常只有幾秒鐘。
下圖解釋了實(shí)現(xiàn)這一功能的過(guò)程。
第 1 步:原始視頻數(shù)據(jù)由麥克風(fēng)和攝像頭采集。數(shù)據(jù)被發(fā)送到服務(wù)器端。
第 2 步:對(duì)視頻數(shù)據(jù)進(jìn)行壓縮和編碼。例如,壓縮算法會(huì)分離背景和其他視頻元素。壓縮后,視頻按照 H.264 等標(biāo)準(zhǔn)進(jìn)行編碼。經(jīng)過(guò)這一步驟后,視頻數(shù)據(jù)的大小會(huì)小得多。
第 3 步:編碼后的數(shù)據(jù)被分成更小的片段,長(zhǎng)度通常為幾秒鐘,因此下載或流式傳輸所需的時(shí)間更短。
第 4 步:將分段數(shù)據(jù)發(fā)送到流媒體服務(wù)器。流媒體服務(wù)器需要支持不同的設(shè)備和網(wǎng)絡(luò)條件。這就是所謂的 “自適應(yīng)比特率流”。這意味著我們需要在步驟 2 和 3 中以不同的比特率生成多個(gè)文件。
第 5 步:將直播數(shù)據(jù)推送到 CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))支持的邊緣服務(wù)器。CDN 大大降低了數(shù)據(jù)傳輸延遲。
第 6 步:觀眾的設(shè)備對(duì)視頻數(shù)據(jù)進(jìn)行解碼和解壓,并在視頻播放器中播放視頻。
第 7 步和第 8 步:如果視頻需要存儲(chǔ)以便重放,則將編碼數(shù)據(jù)發(fā)送到存儲(chǔ)服務(wù)器,觀眾可在稍后請(qǐng)求重放。
實(shí)時(shí)流媒體的標(biāo)準(zhǔn)協(xié)議包括
- 實(shí)時(shí)信息傳輸協(xié)議(RTMP, Real-Time Messaging Protocol):該協(xié)議最初由 Macromedia 開(kāi)發(fā),用于在 Flash 播放器和服務(wù)器之間傳輸數(shù)據(jù)?,F(xiàn)在它用于在互聯(lián)網(wǎng)上傳輸視頻數(shù)據(jù)流。請(qǐng)注意,Skype 等視頻會(huì)議應(yīng)用程序使用 RTC(實(shí)時(shí)通信)協(xié)議來(lái)降低延遲。
- HLS(HTTP Live Streaming):它需要 H.264 或 H.265 編碼。蘋果設(shè)備只接受 HLS 格式。
- DASH(Dynamic Adaptive Streaming over HTTP):DASH 不支持 Apple 設(shè)備。
- HLS 和 DASH 都支持自適應(yīng)比特率流。