b站视频是如何播放的(b站视频怎么播放)

yumo6669个月前 (05-02)技术文章76

上次我们聊 B 站视频为什么播放那么快是利用了视频分片技术,提前将视频分成很多小片,这样就可以实现播放的时候只加载播放位置的视频,只需要加载那一小段就可以了。

这样就可以达到快速播放的目的了。那么我没你拿到视频片段,怎么播放呢?

今天就来研究下。

浏览器的 SourceBuffer 的 API

首先,浏览器本身有一个叫做 SourceBuffer 的 API。我们去看他的官方文档解释。

SourceBuffer 接口标识通过 MediaSource 对象传递到 HTMLMediaElement 并播放的媒体分块。它可以由一个或者多个媒体片段组成。

这样在用的时候,我们把视频的地址,传入到这个媒体对象中去。

这样等到视频一部分一部分下载好之后,就可以直接拼接上去。因为这个媒体对象有个 appendBuffer 方法。

 sourceBuffer.appendBuffer(buf);

看代码是否有SoufceBuffer这个对象

我们直接在控制台搜索代码,果然有这个对象。

基本可以断定,b 站就是通过这个对象来实现网页的视频播放的。

服务端怎么存储视频片段

我们网页下载这些视频片段,那么服务器段就要存,所以服务器要先把视频以某个格式存储好,一个一个片段文件。这样就可以一部分一部分下载。

看b 站使用一种叫 m4s 的格式存储的。

相关文章

Python Flask如何实播放视频流?深入浅出实现方案

本文致力于流式传输,这是一个有趣的功能,它使Flask应用程序能够长时间有效地将大型响应有效地分成小块。为了说明这一主题,我将向您展示如何构建实时视频流服务器!注意:本文有后续内容,Flask视频流再...

如何使用客户端 JavaScript 将视频剪辑转换为 GIF 文件

作为一个程序员,一个热爱技术写作的人,把自己的知识经验通过文字呈现在读者面前,并且让读者通过文字,就能将知识进行学以致用,其实,是非常有调整性的一件事情,因为,它需要我与读者保持有效沟通,既不浪费读者...

为啥你找电影的时候,老碰到404 NOT FOUND?

大家在家无聊不?像我这种也没人约又懒得走动的阿宅只好上上网看看电影啥的像这种情况我觉得我有必要解释一下的当然我看的是正经电影毕竟大家平时冲浪的时候难免也会遇到的嘛这个问题吧严格意义上得问你自己「404...

Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器

Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器目录一:了解音视频流协议:二:方案一 rtsp 转rtmp1、下载nginx + nginx-rtmp-module3、...

支持4K高清视频播放、Chromium78内核的国产浏览器发布尝鲜版

11月25日,360极速浏览器宣布,在2000+内测人员为期三周的内测后,发布抢鲜体验论坛版,版本号为12.0。360极速浏览器12.0版具备“四大亮点”:Chromium78全新内核、4K高清视频播...