javascript - B站是怎么做到HTML5播放flv视频的?
高洛峰
高洛峰 2017-04-11 12:49:16
0
6
520

B站最近新出的HTML5播放器 是怎么做到播放flv视频的?
我在审查元素里看到加载的是flv格式的视频
video标签的src属性 是这样的:blob:http%3A//http://www.bilibili.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

------JS新手

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen(6)
阿神

http://tieba.baidu.com/p/4778...

难道这里的用户质量还没贴吧高嘛 = =

阿神

html5是否可以播放视频文件,是需要看视频文件的编码。
把B站上视频下载下来,可以看到视频编码是AVC,这是大部分支持html5的浏览器支持的编码。
所以即使文件的后缀是.flv也可以播放,如果一个视频文件是mp4格式,但编码不是avc,html5也播放不了

巴扎黑

HTML5的视频播放是基于 视频自身编码和封装的(其实任何播放器也是这样)支持性。
决定一个视频文件如何被解析来播放需要知道其数据封装格式(从而正确的分离 数据格式描述/视频数据包/音频数据包/其他数据包),这一过程在视频播放器处理中称为解复用(dmux),然后根据数据格式描述(查找各种数据包对应的解码器),各种解码器把数据恢复为基于同一时间基线的数据流(视频的帧数据,音频的音频流数据等等),然后用渲染程序向显卡输出各个帧(同时向声卡输出各个音频数据流,以及其他需要同步数据的输出,例如字幕)从而完成播放.

在这个过程中,扩展名其实不是必须的,因为视频本身的数据头才是标识数据封装、编码器等等数据信息的实体,所以仅仅看支持.flv的扩展名其实完全可能是一种处理中的个例,如前 数据编码实可能为H.264 AVC,封装也是mp4的。

其实一般扩展名在web服务中仅仅是为了方便http服务端程序在不解析数据的情况下处理数据,一般在MIME中标识,而对于.flv 和 .mp4,一般仅仅需要标识为其数据需要流式传输即够了,即服务器端其处理需求是一致的。

巴扎黑

播放视频那是浏览器的事,浏览器支持啥格式就能播放啥格式,这和HTML5 JS 有啥关系,HTML5=UI,JS=逻辑处理。

迷茫

这个跟video的属性没关系吧?b站视频格式好像就只有MP4和flv的,应该是在你上传的时候就限制格式了或者转码了

小葫芦

事实并非如楼上诸位所言
去了解下 b 站已开源的 flv.js 就明白了
纯 js demux 再通过 HTML5 MSE 汇入 video

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage