OpenCV视频篇——码流 / 码率 / 比特率 / 帧速率 / 分辨率

一、I、P、B 帧


I 帧(Intracoded frames):I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I 帧使用帧内压缩,不使用运动补偿,由于I 帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧I 帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I 帧图像的压缩倍数相对较低。I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。


P 帧(Predictedframes):P 帧和 B 帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P 帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P 帧图像中可以包含帧内编码的部分,即 P 帧中的每一个宏块可以是前向预测,也可以是帧内编码


B 帧(Bi-directionalpredicted frames):B 帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是,由于 B 帧图像采用了未来帧作为参考,因此 MPEG-2 编码码流中图像帧的传输顺序和显示顺序是不同的


一个 I 帧可以不依赖其他帧就解码出一幅完整的图像,而 P 帧、B 帧不行。P 帧需要依赖视频流中排在它前面的帧才能解码出图像。B 帧则需要依赖视频流中排在它前面或后面的帧才能解码出图像

三种帧的说明


1、I帧

I帧:帧内编码帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

I帧特点:
<3 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
<3 解码时仅用I帧的数据就可重构完整图像;
<3 I帧描述了图像背景和运动主体的详情;
<3 I帧不需要参考其他画面而生成;
<3 I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
<3 I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
<3 I帧不需要考虑运动矢量;
<3 I帧所占数据的信息量比较大。


2、P帧

P帧:前向预测编码帧。==P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面==。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。

P帧特点:
<3 P帧是I帧后面相隔1~2帧的编码帧;
<3 P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
<3 解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
<3 P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
<3 P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
<3 由于P帧是参考帧,它可能造成解码错误的扩散;
<3 由于是差值传送,P帧的压缩比较高。


3、B帧

B帧:双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

B帧的预测与重构
B帧以==前面的I或P帧==和==后面的P帧==为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。

B帧特点
1)B帧是由前面的I或P帧和后面的P帧来进行预测的;
2)B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3)B帧是双向预测编码帧;
4)B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
5)B帧不是参考帧,不会造成解码错误的扩散。

image

二、GOP(Group of picture)

GOP即Group of picture(图像组),==指两个I帧之间的距离==,==Reference(参考周期)指两个P帧之间的距离==。一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧。所以在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量

需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。

同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长

关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。


image

三、CABAC/CAVLC

H.264/AVC标准中两种熵编码方法,CABAC叫自适应二进制算数编码,CAVLC叫前后自适应可变长度编码。

1.CABAC

是一种无损编码方式,画质好,X264就会舍弃一些较小的DCT系数,码率降低,可以将码率再降低10-15%(特别是在高码率情况下),会降低编码和解码的速速。

2. CAVLC

将占用更少的CPU资源,但会影响压缩性能。


帧:当采样视频信号时,如果是==通过逐行扫描==,那么得到的信号就是一帧图像,通常帧频为25帧每秒(PAL制)、30帧每秒(NTSC制);

场:当采样视频信号时,如果是==通过隔行扫描==(奇、偶数行),那么==一帧图像就被分成了两场==,通常场频为50Hz(PAL制)、60Hz(NTSC制);


帧频、场频的由来:最早由于抗干扰和滤波技术的限制,电视图像的场频通常与电网频率(交流电)相一致,于是根据各地交流电频率不同就有了欧洲和中国等PAL制的50Hz和北美等NTSC制的60Hz,但是现在并没有这样的限制了,帧频可以和场频一样,或者场频可以更高。


帧编码、场编码方式
逐行视频==帧内邻近行空间相关性较强==,因此当==活动量非常小或者静止==的图像比较适宜采用==帧编码==方式;
==场内相邻行之间的时间相关性较强==,对==运动量较大==的运动图像则适宜采用==场编码==方式。

image

四、DTS、PTS 的概念

DTS、PTS 的概念如下所述:
DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据

需要注意的是:虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。

当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但如果有 B 帧时,就回到了我们前面说的问题:解码顺序和播放顺序不一致了。

比如一个视频中,帧的显示顺序是:I B B P,现在我们需要在解码 B 帧时知道 P 帧中信息,因此这几帧在视频流中的顺序可能是:I P B B,这时候就体现出每帧都有 DTS 和 PTS 的作用了。DTS 告诉我们该按什么顺序解码这几帧图像,PTS 告诉我们该按什么顺序显示这几帧图像。顺序大概如下:

PTS: 1 4 2 3
DTS: 1 2 3 4
Stream: I P B B


image

五、码流(码率)

OpenCV视频篇——码流 / 码率 / 比特率 / 帧速率 / 分辨率_第1张图片
image
  1. 定义
    码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率,是视频编码中画面质量控制中最重要的部分。同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越好

  2. 原理
    一般情况下,DVD格式歌曲的码流为6~8M;VCD歌曲的码流约为1.5M。相同配置和同样网络环境下,DVD歌曲和VCD歌曲的并发流是不一样的。

    视频比特率与码流只是同一个问题两种叫法,比如一个MPEG2视频文件,一般不但包含视频信息还有音频信息,音频也有自己的比特率,这是音视信息复合在一起的文件,这个文件的码流是其音视码流的总和。

    当然,==码流越大,文件体积也越大==,其计算公式是==文件体积=时间X码率/8==。例如,网络上常见的一部90分钟1Mbps码流的720P RMVB文件,其体积就=5400秒×1Mb/8=675MB。

    通常来说,一个视频文件包括了画面及声音,例如一个RMVB的视频文件,里面包含了视频信息和音频信息,音频及视频都有各自不同的采样方式和比特率,也就是说,同一个视频文件音频和视频的比特率并不是一样的。而我们所说的一个视频文件码流率大小,一般是指视频文件中音频及视频信息码流率的总和。
    以国内最流行,大家最熟悉的RMVB视频文件为例,RMVB中的VB,指的是VBR,即Variable Bit Rate的缩写,中文含义是可变比特率,它表示RMVB采用的是动态编码的方式,把较高的采样率用于复杂的动态画面(歌舞、飞车、战争、动作等),而把较低的采样率用于静态画面,合理利用资源,达到画质与体积可兼得的效果。

  3. 多码流编辑
    多码流技术是通过在编码过程中同时产生多种不同码流及分辨率的流媒体数据,根据用户实际网络带宽条件为之自动分配相对最佳解码画质的解决方案。在实际网络直播应用中,由于位于不同网络位置的访问者所在网络环境存在差异,而仅以某种固定码流分辨率进行网络直播流媒体传送往往会导致网速较高的用户看到的画质仍不够清晰,网速较低的用户解码时间过长而使得画面不够流畅,为解决二者的矛盾使访问者浏览到尽可能看到兼顾清晰和流畅的直播内容,采用多码流技术成为了一个最简单最有效的办法

    例如:以500Kbps来编码音视频。
    其中 1KB/秒=1024*8bps,
    b就是比特位(bit)
    s就是秒(second)
    p就是每(per)
    所以,以500kbps来编码表示经过编码后的音视频数据每秒钟需要用500K的比特来表示

    具体的,==对于音频来说,码流=采样率×比特数×声道==,因此,对于常见的CD格式音频,它的码流就是:44100×16×2=1.41Mbit/sec,即一秒钟的文件大小是0.17625M,而常见的160Kbps的Mp3文件每秒就需160K/1024/8=0.01953125M,相差近10倍。


    image

六、采样率

采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样率是指将模拟信号转换成数字信号时的采样频率,也就是单位时间内采样多少点。一个采样点数据有多少个比特。比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大,音质越好.比特率 =采样率 x 采用位数 x声道数

采样率类似于动态影像的帧数,比如电影的采样率是24赫兹,PAL制式的采样率是25赫兹,NTSC制式的采样率是30赫兹。当我们把采样到的一个个静止画面再以采样率同样的速度回放时,看到的就是连续的画面。同样的道理,把以44.1kHZ采样率记录的CD以同样的速率播放时,就能听到连续的声音。显然,这个采样率越高,听到的声音和看到的图像就越连贯。当然,人的听觉和视觉器官能分辨的采样率是有限的,基本上高于44.1kHZ采样的声音,绝大部分人已经觉察不到其中的分别了。

而声音的位数就相当于画面的颜色数,表示每个取样的数据量,当然数据量越大,回放的声音越准确,不至于把开水壶的叫声和火车的鸣笛混淆。同样的道理,对于画面来说就是更清晰和准确,不至于把血和西红柿酱混淆。不过受人的器官的机能限制,16位的声音和24位的画面基本已经是普通人类的极限了,更高位数就只能靠仪器才能分辨出来了。比如电话就是3kHZ取样的7位声音,而CD是44.1kHZ取样的16位声音,所以CD就比电话更清楚。

当你理解了以上这两个概念,比特率就很容易理解了。==以电话为例,每秒3000次取样,每个取样是7比特,那么电话的比特率是21000==。 而CD是每秒 44100次取样,两个声道,每个取样是13位PCM编码,所以CD的比特率是44100213=1146600,也就是说CD每秒的数据量大约是 144KB,而一张CD的容量是74分等于4440秒,就是639360KB=640MB。

==码率和取样率最根本的差别就是码率是针对源文件==来讲的。

image

七、音频采样率

image
  1. 定义
    音频采样率是指录音设备在一秒钟内对声音信号的采样次数
    采样频率越高声音的还原就越真实越自然。在当今的主流采集卡上,采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级,22.05KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些。

  2. 常用的采样率编辑
    在数字音频领域,常用的采样率有:
    8,000 Hz - 电话所用采样率, 对于人的说话已经足够
    22,050 Hz - 无线电广播所用采样率
    32,000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率
    44,100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率
    47,250 Hz - 商用 PCM 录音机所用采样率
    48,000 Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
    50,000 Hz - 商用数字录音机所用采样率
    96,000 或者 192,000 Hz - DVD-Audio、一些 LPCM DVD 音轨、BD-ROM(蓝光盘)音轨、和 HD-DVD (高清晰度 DVD)音轨所用所用采样率
    2.8224 MHz - Direct Stream Digital 的 1 位 sigma-delta modulation 过程所用采样率。

  3. 用例编辑
    声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。

    采集过程中视频和音频同步是非常重要的,光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16级的采样大小,即2的4次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。


    image

八、比特率

数字信道传送数字信号的速率称为数据传输速率或比特率.

比特率是指每秒传送的比特(bit)数。单位为bps(Bit Per Second),比特率越高,传送的数据越大。在视频领域,比特率常翻译为码率

==比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示==,而比特就是二进制里面最小的单位,要么是0,要么是1。比特率与音、视频压缩的关系,简单的说就是==比特率越高,音、视频的质量就越好,但编码后的文件就越大==;如果比特率越少则情况刚好相反。

==比特率是指将数字声音、视频由模拟格式转化成数字格式的采样率,采样率越高,还原后的音质、画质就越好==。

常见编码模式


VBR(Variable Bitrate)动态比特率

也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;

ABR(Average Bitrate)平均比特率

是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择

CBR(Constant Bitrate)常数比特率

指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高

image

九、帧速率

帧速率也称为FPS(Frames PerSecond)的缩写——帧/秒。是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。越高的帧速率可以得到更流畅、更逼真的动画。每秒钟帧数(FPS)越多,所显示的动作就会越流畅。

image

十、 分辨率

分辨率主要是指显示器所能显示的像素的多少,可以从显示分辨率与图像分辨率两个方向来分类。

1、显示分辨率

(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。

2、图像分辨率

则是单位英寸中所包含的像素点数,其定义更趋近于分辨率本身的定义。象素数越多,其分辨率就越高,因此,分辨率通常是以象素数来计量的.

640*480分辨率的视频,建议视频的码速率设置在700以上,音频采样率44100就行了.
一个音频编码率为128Kbps,视频编码率为800Kbps的文件,其总编码率为928Kbps,意思是经过编码后的数据每秒钟需要用928K比特来表示。

计算输出文件大小公式:
==(音频编码率(KBit为单位)/8 +视频编码率(KBit为单位)/8)×影片总长度(秒为单位)=文件大小(MB为单位)==

image

十一、高清视频

高清,英文为“High Definition”,==即指“高分辨率”==。 高清电视(HDTV),是由美国电影电视工程师协会确定的高清晰度电视标准格式。现在的大屏幕液晶电视机,一般都支持1080i和720P,而一些俗称的“全高清”(Full HD),则是指支持1080P输出的电视机。

目前的720P以及1080P采用了很多种编码,例如主流的MPEG2,VC-1以及H.264,还有Divx以及Xvid,至于封装格式更多到令人发指,ts、mkv、wmv以及蓝光专用等等。

720和1080代表视频流的分辨率,前者1280*720,后者1920*1080,不同的编码需要不同的系统资源,大概可以认为是H.264>VC-1>MPEG2。

==VC-1是最后被认可的高清编码格式==,不过因为有微软的后台,所以这种编码格式不能小窥。相对于MPEG2,VC-1的压缩比更高,但相对于H.264而言,编码解码的计算则要稍小一些,目前来看,==VC-1可能是一个比较好的平衡==,辅以微软的支持,应该是一只不可忽视的力量。一般来说,==VC-1多为 “.wmv”后缀,但这都不是绝对的==,具体的编码格式还是要通过软件来查询。

总的来说,==从压缩比上来看,H.264的压缩比率更高一些==,也就是同样的视频,通过H.264编码算法压出来的视频容量要比VC-1的更小,但是VC-1 格式的视频在解码计算方面则更小一些,一般通过高性能的CPU就可以很流畅的观看高清视频。相信这也是目前NVIDIA Geforce 8系列显卡不能完全解码VC-1视频的主要原因。

==PS&TS是两种视频或影片封装格式,常用于高清片==。扩展名分别为VOB/EVO和TS等;其文件编码一般用MPEG2/VC-1/H.264

目前的高清视频编码格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264。事实上,现在网络上流传的高清视频主要以两类文件的方式存在:一类是经过MPEG-2标准压缩,以tp和ts为后缀的视频流文件;一类是经过WMV-HD(Windows Media Video HighDefinition)标准压缩过的wmv文件,还有少数文件后缀为avi或mpg,其性质与wmv是一样的。==真正效果好的高清视频更多地以H.264与VC-1这两种主流的编码格式流传==。

一般来说,H.264格式以“.avi”、“.mkv”以及“.ts”封装比较常见

image

十二、 位率

位率又称为“码率”。指单位时间内,单个录像通道所产生的数据量,其单位通常是bps、Kbps或Mbps。可以根据录像的时间与位率估算出一定时间内的录像文件大小

1、位率

是一个可调参数,不同的分辨率模式下和监控场景下,合适的位率大小是不同的。在设置时,要综合考虑三个因素:


1、分辨率   
分辨率是决定位率(码率)的主要因素,==不同的分辨率要采用不同的位率==。总体而言,录像的分辨率越高,所要求的位率(码率)也越大,但并不总是如此.所谓“合理的范围”指的是,如果低于这个范围,图像质量看起来会变得不可接受;如果高于这个范围,则显得没有必要,对于网络资源以及存储资源来说是一种浪费。
  
2、场景   
监控的场景是设置码率时要考虑的第二个因素。在视频监控中,==图像的运动剧烈程度还与位率有一定的关系,运动越剧烈,编码所要求的码率就越高==。反之则越低。因此在同样的图像分辨率条件下,监控人多的场景和人少的场景,所要求的位率也是不同的。
 
3、存储空间   
最后需要考量的因素是存储空间,这个因素主要是决定了录像系统的成本。==位率设置得越高,画质相对会越好,但所要求的存储空间就越大==。所以在工程实施中,设置合适的位率即可以保证良好的回放图像质量,又可以避免不必要的资源浪费。

2、位率类型


位率类型又称为码率类型,共有两种——动态码率(VBR)和固定码率(CBR)。

动态码率是指编码器在对图像进行压缩编码的过程中,根据图像的状况实时调整码率高低的过程,例如当图像中没有物体在移动时,编码器自动将码率调整到一个较低的值。但当图像中开始有物体移动时,编码器又自动将码率调整到一个较高的值,并且实时根据运动的剧烈程度进行调整。这种方式是一种==图像质量不变,数据量变化的编码模式==。在动态码率模式下,我们在硬盘录像机上设置的位率值称为“位率上限”。意思是我们人为设定一个编码码率变化的上限,可以低于,但不能高于。根据这个位率值,我们可以估算出一定时间内的存储容量的上限值。  
  
固定码率是指编码器在对图像进行编码的过程中,自始至终采用一个固定的码率值,不论图像情况如何变化。这种方式是==码率量不变,而图像质量变化的编码模式==。在固定码率模式下,在硬盘录像机上设置的位率值就是编码时所使用的位率值,根据这个数值,我们可以精确地估算出一定时间内的存储容量。


量化参数:QP(quantizer parameter)

介于0~31之间,值越小,量化越精细,图像质量就越高,而产生的码流也越长。


峰值信噪比:PSNR(Peak signal-to-noise ratio)

允许计算峰值信噪比,编码结束后在屏幕上显示PSNR计算结果。开启与否与输出的视频质量无关,关闭后会带来微小的速度提升。


profile level

分别是BP、EP、MP、HP:
  1、==BP-Baseline Profile==:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
  2、==EP-Extended profile==:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;
  3、==MP-Main profile==:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),也支持CAVLC 和CABAC 的支持;
  4、==HP-High profile==:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV 格式;
详细点击:profile level


H.264三种档次

每个档次支持一组特定的编码功能,并支持一类特定的应用。
1)==基本档次==:利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
2)==主要档次==:支持隔行视频,采用B片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
3)==扩展档次==:支持码流之间有效的切换(SP和SI片)、改进误码性能(数据分割),但不支持隔行视频和CABAC。主要用于网络的视频流,如视频点播。


主码流/副码流

主码流位率高,图像质量高,便于本地存储;副码流位率低,图像质量低,便于网络传输。

image

十三、音视频的同步

上面说了视频帧、DTS、PTS 相关的概念。我们都知道在一个媒体流中,除了视频以外,通常还包括音频。音频的播放,也有 DTS、PTS 的概念,==但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的==。

音频视频混合在一起播放,就呈现了我们常常看到的广义的视频。在音视频一起播放的时候,我们通常需要面临一个问题:怎么去同步它们,以免出现画不对声的情况。

**要实现音视频同步,通常需要选择一个==参考时钟==,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的 PTS。实践中,我们可以选择:同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。

你可能感兴趣的:(OpenCV视频篇——码流 / 码率 / 比特率 / 帧速率 / 分辨率)