这是我参与「第四届青训营 」笔记创作活动的的第2天
一、讲了什么:
- Web多媒体历史
- 基础知识
- 应用场景
- 新技术标准
- 总结
二、Web多媒体历史:
graph LR
Flash/1994 --> HTML5/2014 --> MSE
其中Flash我们肯定知道,可MSE是什么呢?
简单来说:
- 它可以实现拆分/合并数个缓冲文件,让页面播放的视频文件无法下载
- 让服务端提供多份码率的媒体流,可以根据用户的网络进行码率自适应
Flash:ios不支持Flash / 逐渐被弃用
HTML5:是对 HTML 标准的第五次修订
MSE:Media Source Extensions(流媒体播放)
拓展阅读1:MSE (Media Source Extensions) 上手指南 - 掘金 (juejin.cn)
三、基础知识:
编码格式
图像和视频
一些基础概念如下,
- 图像:
-
分辨率
- 用于确定组成一副图像的像素数据,就是指在水平和垂直方向上图像所具有的像素个数。
-
深度
- 图像深度是指存储每个像素所需要的比特数。图像深度决定了图像的每个像素可能的颜色数,或可能的灰度级数。例如,彩色图像每个像素用R,G,B三个分量表示,每个分量用8位,像素深度为24位,可以表示的颜色数目为2的24次方,既16777216个;一副单色图像存储每个像素需要8bit,则图像的像素深度为8位,最大灰度数目为2的8次方,既256个。
- 视频
-
分辨率:每一帧的图像分辨率
-
帧率:视频单位时间内包含的视频帧的数量
-
码率:就是指视频单位时间内传输的数据量,一般我们用kbps来表示,即千位每秒。
I帧、P帧、B帧
-
I帧:关键参考帧,无需参考其他图像便可独立进行解码(只需考虑本帧)
-
P帧:前面的I帧解码后才解码,依赖于I帧(记录的是与前一帧的差别)
-
注意B帧和P帧的区别
拓展阅读2:视频编码之I帧 、P帧、B帧 - 简书 (jianshu.com)
GOP(group of picture)
一个GOP就是一组连续的画面,大概是两个I帧之间的间隔。
编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。
为什么要编码?
肯定是不编码有坏处嘛,哪些坏处呢?
- 空间冗余
- 事件冗余
- 编码冗余
- 视觉冗余
处理流程
graph LR
预测 --> 变换 --> 量化 --> 熵编码
-
预测:去除空间冗余和时间冗余
-
变换:去除空间冗余
-
量化:去除视觉冗余
-
熵编码:去除编码冗余
格式发展
封装格式
概念:存储音视频、图片或者字幕信息的一种容器
多媒体元素和拓展API(重点!!!)
<video>元素
<audio>和<video>元素
包括
- 方法
- 属性
- 事件
前三个具体参考MDN:
<video> 视频嵌入元素 - HTML(超文本标记语言) | MDN (mozilla.org)
<audio> - HTML(超文本标记语言) | MDN (mozilla.org) - 缺陷:
-
不支持直接播放hls、flv等视频格式
-
视频资源的请求和加载无法通过代码控制
- 分段加载(节约流量)
- 清晰度无缝切换
- 精确预加载
-
所以就要用到媒体源拓展API咯
👇👇👇👇👇👇👇
媒体源拓展API
创建过程:
-
1.创建mediaSource实例\
-
2.创建指向mediaSource的URL\
-
3.监听sourceopen:事件\
-
4.创建sourceBuffer\
-
5.向source Buffer中加入数据\
-
6.监听updateend事件
播放器播放流程
mp4和fmp4
fmp4对流式播放支持的好
流媒体协议
其中HLS:全称是HTTP Live Streaming,是一个由Apple公司提出的基于HTTP的媒体流传输协议,用于实时音视频流的传输。目前HLS协议被广泛的应用于视频点播和直播领域。
以及:
四、应用场景:
- 直播和点播的区别:点播的mp4不是流式媒体,不能作为直播的封装格式。
- 云游戏:所有游戏都在端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。
五、一些新的技术标准:
- WebAssembly:一种新的编码方式,使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行
- WebCodecs API:提供了我们访问底层编码解码接口的能力,可以更深入的进行web音视频开发
- WebGPU:更好地支持多线程
- VebVR、WebXR:较早的 WebVR API 仅设计为支持虚拟现实(VR),而 WebXR 在 Web 上同时支持 VR 和增强现实(AR)。WebXR 增强现实模块增加了对 AR 功能的支持。
六、课后个人总结:
- 本章有什么知识点不容易掌握?
感觉看了半天,有用的点主要是要了解<video>、<audio>以及MSE的应用, 还知道了为什么Web里的有些视频不能下载。
然后还了解了一些新的技术标准!
七、引用参考:
拓展阅读1:MSE (Media Source Extensions) 上手指南 - 掘金 (juejin.cn)
拓展阅读2:视频编码之I帧 、P帧、B帧 - 简书 (jianshu.com)
<video>标签:<video> 视频嵌入元素 - HTML(超文本标记语言) | MDN (mozilla.org)