Web多媒体入门 | 青训营笔记

66 阅读2分钟

Web多媒体入门 | 青训营笔记

这是我参与【第四届青训营】笔记创作活动的第14天

一、Web多媒体历史

image-20220818101341161

二、基础知识
编码格式

图像基本概念

图像分辨率:用于确定组成一副图像的像素数据

图像深度:存储每个像素所需要的比特数

视频基本概念

分辨率:每一帧的图像分辨率

帧率:视频单位时间内包含的视频帧数量

码率:视频单位时间内传输的数据量

I帧、P帧、B帧

image-20220818102047287

GOP(group of picture)

两个I帧之间的间隔

image-20220818102138662

编码数据处理流程

image-20220818102219234

封装格式

存储音视频、图片或者字幕信息的一种容器

image-20220818102303837

image-20220818102320630

多媒体元素和扩展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等格式视频
  • 可实现视频分段加载、清晰度无缝切换、自适应码率、精确预加载等image-20220818103407215

MSE播放流程

image-20220818103442661

播放器播放流程

image-20220818103512409

流媒体协议

image-20220818103540640

HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议

image-20220818104138138

三、应用场景
  • 视频编辑
  • 点播
  • 直播
  • 图片
  • 云游戏
  • 实时通信