Web多媒体 | 青训营笔记

90 阅读4分钟

这是我参与「第四届青训营」笔记创作活动的的第2天,是我青训营发表的第二篇笔记。

这篇是关于 Web多媒体 方面的内容。

编码格式


图像
  • 图像分辨率

    图像分辨率:用于确定组成一副图像的像素数据,就是指的是在水平和垂直方向上图像所具有的像素个数

  • 图像深度

    图像深度:是指存储每个像素所需要的比特数。图像深度决定了图像每个像素可能的颜色数,或者可能的灰度级数。

    例如:彩色图像每个图象用RGB三个分量来表示,每个分量用8位,那么 像素深度 就是24位,可以表示的颜色数目就是2^24次方。


视频
  • 分辨率

    每一帧的图像分辨率

  • 帧率

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

  • 码率

    是指视频单位时间内传输的数据量,一般用kbps,即千位每秒

时间维度上一系列连续的图片就是视频

  • I帧 P帧 B帧 GOP

I帧又称为内编码帧,是一种自带全部信息的独立帧,无需参考其他图像就能够独立进行解码

P帧又称间预测编码帧,需要参考前面的I帧或者P帧才能够进行编码

B帧又称为双向预测编码帧,就是B帧记录的是本帧与前后帧的差别,需要先解码前后帧才能够解码本帧

GOP(group of picture):是两个I帧之间的间隔

IBP帧.png

GOP.png


为什么要进行编码的原因

举个例子:

拿一张1920×1080的照片,那么这张照片的大小就是1920×1080×24/8=622800Byte(5.9MB),以视频30FPS,那么一分钟就是30×60×5.9MB=10520MB(10.37GB) ,那么时长60分钟的视频大小就是10.37GB×60=622.2GB, 就会占据很大的一块存储空间,甚至大过手机或者电脑的存储空间

  • 空间冗余

    空间冗余.png

  • 时间冗余

    当第N帧和第N+1帧差不并不是太大时,同时对于视频没有太大影响时,高帧率就会造成一定程度的浪费

    时间冗余.png

  • 编码冗余

    编码冗余.png

  • 视觉冗余

    因为人的眼睛分辨不出极高和极低分辨率的情况,所以当降低分辨率时也是能够达到同样的效果

    视觉冗余.png


编码数据的流程

dataProcess.png


多媒体元素 (video audio)

video和audio的两种写法,第二种写法可以写多个 source 标签,以便能够找到有效的链接进行正常的播放

<video src="./video.mp4" muted autoplay controls width=600 height=300></video>

<video muted autoplay controls width=600 height=300>
    <source src="./video.mp4"/>
</video>

<audio src="./audio.mp3" muted autoplay controls width=600 height=300></audio>

<audio muted autoplay controls width=600 height=300>
    <source src="./audio.mp3"/>
</audio>
<video> 和 <audio> 元素的方法
方法说明
play()开始播放音频/视频
pause()暂停当前播放的音频/视频
load()重新加载音频/视频
canPlayType()检测浏览器是否能够播放指定的音频/视频类型
addTextTrack()向音频/视频添加新的文本轨道

方法.png

<video> 和 <audio> 元素的属性
属性说明
autoplay设置或者返回是否在加载完成后随机播放音频/视频
controls设置或者返回音频/视频是否显示控件(播放、暂停等)
currentTime设置或者返回音频/视频中的当前播放位置(以 记)
duration返回当前音频/视频的长度(以 记)
src设置或者返回音频/视频元素的当前来源
volume设置或者返回音频/视频的音量
buffered返回表示音频/视频已缓冲部分的TimeRanges对象
playbackRate设置或者返回音频/视频播放的速度
error返回表示音频/视频错误状态的MediaError对象
readyState返回音频/视频当前的就绪状态
…………

属性.png

<video> 和 <audio> 元素的事件
事件说明
loadedmetadata当浏览器已加载音频/视频元数据时触发
canplay当浏览器可以开始播放音频/视频时触发
play当音频/视频已开始或者不再暂停时触发
playing当音频/视频在因缓冲而暂停或者停止后已就绪时触发
pause当音频/视频已暂停时触发
timeupdate当目前的播放位置已更改时触发
seeking当用户开始移动/跳跃到音频/视频中的新位置时触发
seeked当用户已移动/跳跃到音频/视频的新位置时触发
waiting当视频由于需要缓冲下一帧而停止时触发
ended当目前的播放列表已结束时触发
…………

事件.png

媒体源扩展API(Media Source Extension)

MSE.png

MSEPlay.png

播放器.png

流媒体

HLS是HTTP Live Streaming,是由Apple提出的基于HTTP的媒体流传输协议,用于实时音视频流的传输

MSE协议.png

流程.png

结束

通过web多媒体的学习,对 video 和 audio 的了解更加的深入,对于使用这两个元素有了更好的理解