Rumah  >  Soal Jawab  >  teks badan

javascript - B站是怎么做到HTML5播放flv视频的?

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

------JS新手

高洛峰高洛峰2727 hari yang lalu485

membalas semua(6)saya akan balas

  • 阿神

    阿神2017-04-11 12:51:16

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

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

    balas
    0
  • 阿神

    阿神2017-04-11 12:51:16

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

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-11 12:51:16

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

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

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

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-11 12:51:16

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

    balas
    0
  • 迷茫

    迷茫2017-04-11 12:51:16

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

    balas
    0
  • 高洛峰

    高洛峰2017-04-11 12:51:16

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

    balas
    0
  • Batalbalas