Web多媒体入门 | 青训营笔记
这是我参与【第四届青训营】笔记创作活动的第14天
一、Web多媒体历史
二、基础知识
编码格式
图像基本概念
图像分辨率:用于确定组成一副图像的像素数据
图像深度:存储每个像素所需要的比特数
视频基本概念
分辨率:每一帧的图像分辨率
帧率:视频单位时间内包含的视频帧数量
码率:视频单位时间内传输的数据量
I帧、P帧、B帧
GOP(group of picture)
两个I帧之间的间隔
编码数据处理流程
封装格式
存储音视频、图片或者字幕信息的一种容器
多媒体元素和扩展API
<video>元素
<!DOCTYPE html>
<html>
<body>
<video src="./video.mp4" muted autoplay controls width=600 height=300></video>
<video muted autoplay controls width=600 height=300>
<source src="./video.mp4"></source>
</video>
</body>
</html>
<audio>元素
<!DOCTYPE html>
<html>
<body>
<audio src="./audio.mp4" muted autoplay controls width=600 height=300></video>
<audio muted autoplay controls width=600 height=300>
<source src="./audio.mp4"></source>
</audio>
</body>
</html>
元素方法
- play():开始播放音视频
- pause():暂停当前播放的音视频
- load():重新加载音视频元素
- canPlayType():检测浏览器能否播放指定的音视频类型
- addTextTrack():向音视频中添加新的文本轨道
<audio>和<video>元素缺陷
-
不支持直接播放hls、flv等视频格式
-
视频资源的请求和加载无法通过代码控制
- 分段加载
- 清晰度无缝切换
- 精确预加载
媒体源扩展API
- 无插件在web端播放流媒体
- 支持播放hls、flv、mp4等格式视频
- 可实现视频分段加载、清晰度无缝切换、自适应码率、精确预加载等
MSE播放流程
播放器播放流程
流媒体协议
HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议
三、应用场景
- 视频编辑
- 点播
- 直播
- 图片
- 云游戏
- 实时通信