b站視頻是如何播放的-1.jpg (315.76 KB, 下載次數: 13)
下載附件
2024-10-16 16:25 上傳
上次我們聊 B 站視頻為什么播放那么快是利用了視頻分片技術,提前將視頻分成很多小片,這樣就可以實現播放的時候只加載播放位置的視頻,只需要加載那一小段就可以了。
這樣就可以達到快速播放的目的了。那么我沒你拿到視頻片段,怎么播放呢?
今天就來研究下。
瀏覽器的 SourceBuffer 的 API
首先,瀏覽器本身有一個叫做 SourceBuffer 的 API。我們去看他的官方文檔解釋。
SourceBuffer 接口標識通過 MediaSource 對象傳遞到 HTMLMediaElement 并播放的媒體分塊。它可以由一個或者多個媒體片段組成。
這樣在用的時候,我們把視頻的地址,傳入到這個媒體對象中去。
這樣等到視頻一部分一部分下載好之后,就可以直接拼接上去。因為這個媒體對象有個 appendBuffer 方法。
sourceBuffer.appendBuffer(buf);看代碼是否有SoufceBuffer這個對象
我們直接在控制臺搜索代碼,果然有這個對象。
b站視頻是如何播放的-2.jpg (21.61 KB, 下載次數: 14)
下載附件
2024-10-16 16:25 上傳
基本可以斷定,b 站就是通過這個對象來實現網頁的視頻播放的。
服務端怎么存儲視頻片段
我們網頁下載這些視頻片段,那么服務器段就要存,所以服務器要先把視頻以某個格式存儲好,一個一個片段文件。這樣就可以一部分一部分下載。
b站視頻是如何播放的-3.jpg (66.73 KB, 下載次數: 16)
下載附件
2024-10-16 16:25 上傳
看b 站使用一種叫 m4s 的格式存儲的。 |