多媒体基础知识
媒体处理过程
解协议
将流媒体传输方案中要求的数据解析为标准的相应封装格式数据。
音视频在网络中传播时需要遵守对应的传输方案所要求的格式,如DASH、HLS将媒体内容分解成一系列小片段,每个片段有不同的备用码率版本。
同时应用层的协议会要求在媒体文件本身之外,传输信令数据(如对播放的控制或网络状态的描述)
解协议的过程会去除信令数据并保留音视频内容,需要的话还要对视频段进行拼接,最终将其还原成传输之前的媒体格式如MP4,FLV等。
封装格式
封装格式如AVI、MPEG、Real Video将音频和视频组合打包成一个完整的文件.
封装格式不会影响视频的画质,影响画质的是视频的编码格式。
解封装过程就是将打包好的封装格式分离成某种编码的音频压缩文件和视频压缩文件,有时也包含字幕和脚本。
比如FLV或TS格式数据,解封装之后得到H.264-AVC编码的视频码流和AAC编码的音频码流。
编码
视频的本质是一帧又一帧的图片。
所以对于一部每秒30帧,90分钟,分辨率为1920x1080,24位的真彩色的视频,在压缩之前的大小$S$满足: $$ 一帧大小s = 1920 * 1080 * 24 = 49766400(bit) = 6220800(Byte) \ 总帧数n = 90 * 60 * 30 = 162000 \ 总大小S = s * n = 6220800 * 162000 = 1.0077696*10^{12}(Byte) \approx 939(GB) $$ 因为未经压缩的视频体积过于庞大,所以需要对其进行压缩,而压缩就是通常所说的编码。
视频编码方式:H.264-AVC,H.265-HEVC,H.266-VVC
音频编码方式:MP3,AAC
压缩比越大,解压还原之后播放的视频越失真,因为压缩过程中不可避免地丢失了视频中原有图像的数据信息。
解码
解码就是解压缩过程。
解码之后能够得到系统音频驱动和视频驱动能识别的音频采样数据(如PCM数据)和视频像素数据(如YUV420,RGB数据)。
音视频同步
根据时间,帧率和采样率采用一定的算法,同步解码出来的音频和视频数据,将其分别送至声卡和显卡播放。
视频质量指标
分辨率
-
分辨率指的是视频图像在一个单位尺寸内的精密度。
-
将视频放大足够大的倍数之后就能看到组成影像的基本单元:像素。
-
视频的分辨率从数值上描述了像素点的个数,如1920x1080:视频在水平方向有1920个像素,垂直方向有1080个像素。
-
常见的描述方式:
- 1080P:指视频有1080行像素,P=>Progressive(逐行扫描)
- 2K:指视频有2000列像素
- MP:像素总数,指像素的行数P与列数K乘积的结果(百万像素)
- 1080P的分辨率为1920x1080=2073600,所以1080P通常也称为200万像素分辨率
-
通常视频在同样大小的情况下,分辨率越高,所包含的像素点越多,画面就越细腻清晰
-
参考链接:
视频帧率
-
帧率的单位FPS(Frame Per Second)或Hz,即每秒多少帧,决定视频画面的流畅程度。
-
低帧率会导致播放卡顿,镜头移动不顺畅,并伴随画面模糊的主观体验;
帧率过高则会造成眩晕的感觉。
-
不同帧率的视频在支持不同帧率的设备上播放:
-
若设备最高支持60fps,则播放120fps视频的时候,设备会每隔一帧删除一帧,被删除的帧即成为无效帧。
所以高帧率的视频在低帧率设备上播放时会导致播放卡顿。
-
若设备最高支持120fps,则播放60fps视频的时候,设备会每隔一帧复制一帧,来填补空缺的帧位置。
但是效果和在60fps上的设备播放一样,不能提升播放流畅度。
-
-
关于显卡对帧率的影像:
- 显示器帧率低而显卡输出帧率高时,会导致画面撕裂:显示器同时将两帧或几帧显示在同一个画面上
- 显示器帧率高而显卡输出帧率低时,同视频帧率高显示器帧率低的情况。
视频码率
-
码率的概念出现在视频编码之后,因为压缩之后的视频已经成为二进制数据,所以使用码率的称呼。
-
码率的单位是bps(bit per second),即每秒多少比特。
-
与视频质量的关系:
-
分辨率不变的情况下,码率越大,压缩比越好,画面质量越清晰。
码率越高,精度越高,处理出的文件就越接近压缩前的原始状态,每一帧的图像质量越高,画质越清晰,当然对播放设备的解码能力要求也越高。
压缩比越小,视频体积越大,越接近源文件。
-