U4S3L1——视频格式和编解码器
U4S3L1——视频格式和编解码器
为什么学习视频格式和编解码器
视频格式和视频的编解码器,会影响Unity在不同平台是否能正常播放视频
所以我们必须简单了解视频格式和编解码器的本质,才能学习关于视频兼容性相关的知识
所以学了这节课,我们之后才能学习视频兼容性相关知识点
视频文件的本质
视频文件本质上就是一个“数据容器”,它不仅可以包含视频数据本身,它还包括:
- 音频
- 字幕
- 轨道信息(轨道还可以有多个,比如不同语言的字幕,不同语言的音频)
等等其它内容
不同格式的视频文件,比如.mp4、.mov、.avi、.webm等,他们表示视频文件中的数据是使用某种容器格式排列的
说人话:视频的本质就是一堆数据(图像、音频、字幕等等)的集合,不同格式的视频区别就是存读数据的方式方法不同而已
视频的编码器和解码器
我们了解了视频本质就是一堆数据的集合,为了节省带宽和存储空间,
视频中每个轨道(不同的音频,字幕等等信息)都使用“编解码器”进行编码和解码,
编码器负责压缩数据,解码器负责解压数据,通过他们对视频数据进行压缩和解压
常见的视频编解码格式为 H.264,常见的音频编解码格式为 AAC
说人话:
视频的编码器,负责将视频数据进行压缩,以节约空间
视频的解码器,负责将视频数据进行解压,解压后才能用于播放
他们本质上就是压缩和解压数据的一种规则,所以我们在播放视频时,要用合适的解码器(规则)来解压视频
硬件和软件解码
我们了解了什么是“编解码器”,
那所谓的硬件和软件解码其实就是,解码(将视频信息解压)的这个过程是通过硬件来完成的还是通过软件来完成的
硬件解码
目前大多数的设备都有专用于解码视频的硬件,一般是由GPU(图形处理器,显卡的核心硬件)来进行硬件解码的
使用GPU进行硬件解码可以降低CPU的工作负荷,降低功耗,节省电量,节省性能
这种硬件加速可通过本机自定义API实现,这些API因平台而异
Unity帮助我们进行了封装,提供了通用的API供我们使用,Unity也会自己帮助我们判断来进行硬件解码
硬件解码优缺点
- 优点:效率高,降低功耗
- 缺点:无法支持所有视频格式文件,画质不是特别清晰
软件解码
软件解码相当于就是Unity自己利用CPU进行计算来进行解码,此软件解码方案使用 VP8 视频编解码器和 Vorbis 音频编解码器
如果平台的硬件解码方式在分辨率、多个音频轨道或 Alpha 通道支持方面带来了不必要的限制,则软件解码将非常有用
但是软件解码会增加CPU的工作负荷,Unity也提供了基于软件的视频解码
软件解码优缺点
- 优点:能够解码所有视频格式文件,画质更加清晰
- 缺点:增加CPU工作负荷,更耗电,解码时会造成明显卡顿
硬件和软件解码简单总结
硬件解码就是有个专门的一个计算机硬件设备帮助我们进行解码计算,一般是GPU来进行硬件解码
软件解码就是软件自己通过代码规则来进行解码,本质上就是通过CPU去计算处理解码
所以硬件解码理论上来说效率和速度都比软件解码快,Unity两种方式都有提供,但具体使用的哪种要根据平台而定
总结
-
视频文件的本质
记录了视频、音频、字幕、轨道信息等内容的数据容器
-
视频的编码器和解码器
编码器用于压缩视频数据,解码器用于解压视频数据
-
硬件和软件解码
硬件解码是通过GPU对视频数据进行解压,效率高效果差
软件解码是通过CPU对视频数据进行解压,效率低效果好