Hibop / Hibop.github.io

Hibop 个人博客
https://hibop.github.io/
23 stars 1 forks source link

关于HTML5多媒体开发 #3

Open Hibop opened 6 years ago

Hibop commented 6 years ago

浏览器视屏播放器解决方案:

1. 历史方法——嵌入外接插件:

嵌入外接小程序,在web文档中嵌入外接插件以启动媒体播放器。

3. 原生多媒体:audio、video、track(文本轨道、字幕)、source(文件源,多源实现浏览器兼容性)

主要属性:

src preload autoplay controls muted(静音) loop crossorigin(CORS) poster(海报) media: 很重要媒体查询,可以实现在不同大小设备上兼容

JS-API

js事件交互

自定义控件开发:

css3 进行播放器美化处理:

使用canvas画布和svg经行高级开发:

HTML5多媒体开发的主要利弊分析:

利:

不足:

好在现在 HTML5 video 由各浏览器厂商实现了高性能硬解,MSE 作为媒体格式扩展的补充。再这两个不足方面加大力度。

附件: GitHub - Bilibili/flv.js: HTML5 FLV Player

flv.js 做了三件事:

  1. HTML5 原生仅支持播放 mp4/webm 格式,flv.js 实现了在 HTML5 上播放 FLV 格式视频;
  2. 使 Bilibili 网页端平滑过度到 HTML5 播放器,历史遗留不再是障碍;
  3. 对于视频直播,在 HTML5 上支持了延迟极低 HTTP FLV 播放,解开网页端直播对 Flash 的依赖

一些人问我为什么不直接采用 MP4 格式,并表示对 FLV 格式的厌恶这个问题一方面是历史遗留问题,由于视频网站前期完全依赖 Flash 播放而选择 FLV 格式;另一方面,如果仔细研究过 FLV/MP4 封装格式,你会发现 FLV 格式非常简洁,而 MP4 内部 box 种类繁杂,结构复杂固实而又有太多冗余数据。FLV 天生具备流式特征适合网络流传输,而 MP4 这种使用最广泛的存储格式,设计却并不一定优雅。这里我不想谈论多媒体封装格式的优劣。flv.js 是在 HTML5 上实现自定义视频格式播放的一个较好的范例,充分利用了 Media Source Extensions, Fetch API 以及 ECMAScript 6 等 HTML5/Web 上较新的技术,并考验着这些 API:开发期间发现 Edge 对 Fetch API 的支持存在 bug,发现各个浏览器在 MSE 的实现细节上都有一些差异和问题,发现 Safari 的 MSE 实现健壮度较差(滑稽)在 flv.js 项目初期,Media Source Extensions (MSE) 在国内处于无人问津的状态;而 MSE API 已经过近 4 年的发展演进,是 HTML5 多媒体相关最重要的 API 之一。MSE 是 HTML5 上实现自定义格式播放的关键,flv.js 开源也是希望 MSE 能被更广泛地了解和应用。最后,Chrome 等浏览器正在加速 Flash 淘汰的进程,HTML5 video 由各浏览器厂商实现了高性能硬解,MSE 作为媒体格式扩展的补充,flv.js 证明了当前 HTML5 多媒体技术已超越陈旧的 Flash。