[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格式简介

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