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

133 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第16天

1-历史

  • PC时代我们浏览器不支持音视频的播放,我们利用一些插件,例如:flash,IE上的Activeity,severlet等副客户端。
  • 移动互联网时代,开始不支持flash,开始html5在浏览器播放音视频,支持MP4,OGG,和一些webm但一些格式不支持播放例如之前使用的FLV,功能有限。
  • Media Source Extensions --媒体资源扩展API 基于这个API支持多格式播放例如FLV TS HLS格式。

2-基础知识

01.编码格式

  • 图像基本概念:

tuxiang.png

  • 视频基本概念:

shipin.png

  • 编码格式: I帧:帧内编码帧,它的视频的压缩不依赖于任何帧,解码只依赖于自身信息。 P帧:前向臆测编码帧,解码依赖于前面一帧。 B帧:双向预测编码帧,解码不仅依赖前面一帧,还有后面的一帧。 bianmageshi.png
  • DTS解码时间戳,PTS 显示时间戳 DTS是解码顺序的时间戳,PTS帧显示顺序时间戳 只有I帧和P帧时二者相等,有B帧则DTS发生变化。
  • GOP 两个I帧之间的间隔:一般2秒到4秒

GOP.png

我们为什么要编码? 一张分辨率为:1920 x 1080 的图片 大小:分辨率x 图像深度 => 1920 x 1080 x 24 / 8 = 6220800Byte (5.9M) 占有空间太大,所以编码是为了储存和传输。 编码就是将不相关,冗余的数据压缩,去除:

  • 空间冗余--相同像素只用存储一个像素值,声明重复次数 空间.png
  • 时间冗余-- 不同帧相同的数据重复存储

时间.png

  • 视觉冗余--人类视觉系统看不见的颜色进行去除 视觉.png
  • 编码冗余-- 用1代表蓝色,0代表白色 编码.png

编码数据处理流程:

数据处理.png 编码格式种类:

格式.png

02- 封装格式

封装格式:存储音视频,图片或字幕信息的一种容器。

封装格式.png 封装格式种类: 封装格式种类.png

03- 多媒体格式和扩展API

video,audio

<html>
<head>
<title>video标签<title>
</head>
<body>
//直接使用src属性连接视频地址
<video src="./video.mp4" muted autoplay controls width="600px" height="500px"></video>

<video  muted autoplay controls width="600px" height="500px">
<source src="./video.mp4"></source>
<source src="./video.OGG"></source>
</video>
</body>
</html>

方法、属性、事件:

changyongfangfa.png 注意play()方法是异步的,play之后快速触发pause会产生错误 属性.png

事件.png 缺陷:

  • 视频资源的请求和加载无法通过代码控制
    • 分段加载(节省流量)
    • 清晰度无缝切换
    • 精确预加载

MSE

浏览器支持情况:

支持情况.png 使用MSE的过程步骤: 首先前面的video/mp4代表这是一段mp4格式封装的视频,同理也存在video/webm,audio/mpeg,audio/mp4这样的mime格式。 下面来看code的第二段mp4a.40.2,这一段信息使用关于音频部分的,嗲表视频的音频部分采用了AAC LC标准: mp4a代表此视频的音频部分采用MPEG-4压缩编码。 随后是一个分隔点,和一个十六进制数(40),这是ObjectTypeIndcation,40对应的是Audio ISO、IEC 14496-3标准,(不同值具有不同含义,详细参考官方文档) 然后又是一个分隔点,和一个十进制数(2),这是MPEG-4Audio Object Type,是一种H.264视频中常用的音频编码规范。 第一段avc1.42E01E即它用于告诉浏览器关于视频编解码的一些重要信息,如编码方式,分辨率,帧率,码率以及对解码器解码能力的要求。 在这个例子中avc1代表视频采用H.264编码,随后是一个分隔点,之后是3个两位的十六进制的数,这3个十六进制数分别代表:

  • AVCProfileIndeication (42)
  • profile_compability (E0)
  • AVCLevellndication (1E) 第一个用于标识H.264的profile,后两个用于标识视频对于解码器的要求。 使用MSE.png

04- 流媒体协议

流媒体协议.png

协议概念.png

过程解析.png