b站视频是如何播放的(b站视频怎么播放)
上次我们聊 B 站视频为什么播放那么快是利用了视频分片技术,提前将视频分成很多小片,这样就可以实现播放的时候只加载播放位置的视频,只需要加载那一小段就可以了。
这样就可以达到快速播放的目的了。那么我没你拿到视频片段,怎么播放呢?
今天就来研究下。
浏览器的 SourceBuffer 的 API
首先,浏览器本身有一个叫做 SourceBuffer 的 API。我们去看他的官方文档解释。
SourceBuffer 接口标识通过 MediaSource 对象传递到 HTMLMediaElement 并播放的媒体分块。它可以由一个或者多个媒体片段组成。
这样在用的时候,我们把视频的地址,传入到这个媒体对象中去。
这样等到视频一部分一部分下载好之后,就可以直接拼接上去。因为这个媒体对象有个 appendBuffer 方法。
sourceBuffer.appendBuffer(buf);
看代码是否有SoufceBuffer这个对象
我们直接在控制台搜索代码,果然有这个对象。
基本可以断定,b 站就是通过这个对象来实现网页的视频播放的。
服务端怎么存储视频片段
我们网页下载这些视频片段,那么服务器段就要存,所以服务器要先把视频以某个格式存储好,一个一个片段文件。这样就可以一部分一部分下载。
看b 站使用一种叫 m4s 的格式存储的。