B站最近新出的HTML5播放器 是怎么做到播放flv视频的?我在审查元素里看到加载的是flv格式的视频video标签的src属性 是这样的:blob:http%3A//http://www.bilibili.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
blob:http%3A//http://www.bilibili.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
------JS新手
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
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
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