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

130 阅读2分钟

为什么要编码?

看下面这张图,一个90分钟的视频就需要933G,而我们的手机大多256G、128G,PC端也很少有超过933G的,显然如果不通过编码的话,视频实在是太耗费空间了。

image.png

编码格式

  • 空间冗余:存储相似以及相同的像素值,然后只需要记下来重复多少次即可,可以大大节省空间。
  • 时间冗余:两个十分相近的时间,图像基本是一样的以及类似的,可能会有99%的相同部分和1%的不同部分,这时我们可以把1%的不同部分记下来,再在播放时还原就好了。
  • 编码冗余:一般情况下,我们存储彩色像素需要24bit,而如果像素中只有很少的颜色,比如蓝和白,这时我们可以用1表示蓝色,用0表示白色,这样用1位就可以表示存储,大大节约空间,这样我们成为编码冗余。
  • 视觉冗余:一般针对于人们的视觉系统,因为我们的视觉系统并不是所有颜色都可以看到的,以及对于高频的像素并不是那么敏感的,例如100个像素看足球和10000个像素看足球,我们是可以看出有明显区别的,而将10000个像素和100000个像素做对比,我们会发现基本上是一样的,看不出足球有什么区别。

不同编码

265编码可以播放4K视频,266编码用于VR,AR和8K

AVS编码是由于知识产权问题,我国自己出了一套编码。

封装格式

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

多媒体元素和扩展API

<video>标签

  • <video>中直接写入src
  • <video>中嵌套<source>,和第一种区别是可以嵌套多个视频格式,如果第一种格式不支持,可以换下一种视频格式。

<audio>标签和 <video>标签用法一样,以下是二者的五种方法和属性:

MSE

MSE创建过程

mp4和fmp4的区别

mdat文件中存储所有视频和音频的裸流数据 moov相当于一个封装信息,我们一般称为源数据封装信息。 fmp4中有多个moov和m,说明fmp4对于流式播放是比较友好的。

流媒体协议