[TOC]

视频播放器原理

播放一个视频文件的流程:

封装格式

MP4,RMVB, TS, FLV, AVT

封装格式的作用

视频码流和音频码流按照一定的格式存储在一个文件中

封装格式分析工具: Elecard Format Analyzer

常见的封装格式:

名称 推出机构 目前使用领域
AVI Microsoft Inc. BT下载影视
MP4 MPEG 互联网视频网站
TS MPEG IPTV,数字电视
FLV Adobe Inc. 互联网视频网站
MKV CoreCodec Inc. 互联网视频网站
RMVB Real Networks Inc. BT下载影视

MPEG2-TS格式简介:

不包含文件头。数据大小固定(188字节)的TS Packet构成

FLV格式简介

包含文件头。数据由大小不固定的Tag构成。

视频编码数据

视频编码的作用:

将视频像素数据(RGB,YUV等)压缩称为视频码流,从而降低视频的数据量

视频编码分析工具: Elecard Stream Eye

常见的视频编码数据

名称 推出机构 推出时间 目前使用领域
HEVC(H.265) MPEG/ITU-T 2013 研发中
H.264 MPEG/ITU-T 2003 各个领域
MPEG4 MPEG 2001 不温不火
MPEG2 MPEG 1994 数字电视
VP9 Google 2013 研发中
VP8 Google 2008 不普及
VC-1 Microsoft Inc. 2006 微软平台

H.264格式简介

数据由大小不固定的NALU构成,最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据

H.264压缩方法

比较复杂,包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。可以将图像数据压缩100倍以上

音频编码数据

音频编码的作用

将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量

常见音频编码数据

名称 推出机构 推出时间 目前使用领域
ACC MPEG 1997 各个领域(新)
AC-3 Dolby Inc. 1992 电影
MP3 MPEG 1993 各个领域(旧)
WMA Microsoft Inc. 1999 微软平台

AAC格式简介

数据由大小不固定的ADTS构成

视频像素数据

视频像素数据作用

保存了屏幕上每个像素点的像素值。

格式

常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等。

压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。

特点

视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:
$$
3600\times25\times1920\times1080\times3=559.9G
$$
这里假定帧率为25Hz,取样精度8bit。

YUV格式像素数据查看工具: YUV Player

RGB格式简介

1、Red、Green、Blue三种颜色,可以混合成世界上所有的颜色。
2、彩色图像中每个点,由R、G、B三个分量组成。
3、以RGB24为例,图像像素数据的存储方式如下:

从图中可以看出,RGB24依次存储了每个像素点的R、G、B信息。其中BMP文件中存储的就是RGB格式的像素数据。

YUV格式简介

相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。

YUV格式中,Y只包含亮度信息,而UV只包含色度信息。
以YUV420P为例,图像像素数据的存储方式如图所示。从图中可以看出,YUV420P首先存储了整张图像的Y信息,然后存储整张图像的U信息,最后存储了整张图像的V信息。

音频采样数据

音频采样数据作用:

保存了音频中每个采样点的值。

特点:

音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:
$$
4604410022=42.3MB
$$
这里假定采样率为44100Hz,采样精度为16bit。
音频采样数据查看工具:Adobe Audition

PCM格式简介:

单声道的情况下按照顺序存储每个采样点的数据。
双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据