b 站視頻播放技術-1.jpg (309.46 KB, 下載次數(shù): 25)
下載附件
2024-10-16 18:12 上傳
我們經(jīng)常看 b 站的視頻,它就是典型的流媒體網(wǎng)站,就好奇它網(wǎng)站上的視頻都是如何播放的,今天我就來研究一下。
b 站播放視頻的特點
不知道大家有沒有發(fā)現(xiàn) b 站播放的視頻是非常快的,基本上是點哪里就播放到哪里。
而且如果你上次看到某個位置,下次會從那個位置繼續(xù)播放。
那么如果一個視頻非常大的話,要想完整下載下來需要很久,怎么做到點到哪個位置就播放那個位置的視頻呢。
只下載需要播放位置的視頻
要想實現(xiàn) b 站快速播放的能力,就要實現(xiàn)只下載播放位置的視頻,也就是對應位置范圍那個的視頻。
也就是說我沒你請求視頻接口的時候,在請求的 headers 頭上帶上 Range 這個字段。
b 站視頻播放技術-2.jpg (77.19 KB, 下載次數(shù): 19)
下載附件
2024-10-16 18:12 上傳
服務器返回的時候返回 206 狀態(tài)碼,還有Content-Range的 header 代表當前下載的是整個資源的哪一部分。
b 站視頻播放技術-3.jpg (68.56 KB, 下載次數(shù): 19)
下載附件
2024-10-16 18:12 上傳
Content-Length 是當前內(nèi)容的長度,而 Content-Range里是資源總長度和檔期愛你資源分范圍。
所以我們想看 b 站視頻請求的時候,只需要把 206 狀態(tài)碼給過濾出來。
視頻播放過程
我們根據(jù) range 下載到對應位置視頻,然后視頻片段連接起來就可以播放了。視頻提前分好段,這樣在拉進度條的時候,計算出在哪個 range,然后就下載對應 range 視頻片段進行播放。 |