视频音频编码知识.docx

上传人:b****8 文档编号:30069299 上传时间:2023-08-04 格式:DOCX 页数:68 大小:712.12KB
下载 相关 举报
视频音频编码知识.docx_第1页
第1页 / 共68页
视频音频编码知识.docx_第2页
第2页 / 共68页
视频音频编码知识.docx_第3页
第3页 / 共68页
视频音频编码知识.docx_第4页
第4页 / 共68页
视频音频编码知识.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

视频音频编码知识.docx

《视频音频编码知识.docx》由会员分享,可在线阅读,更多相关《视频音频编码知识.docx(68页珍藏版)》请在冰豆网上搜索。

视频音频编码知识.docx

视频音频编码知识

audio。

AAC(AdvancedAudioCoder)区别于ac3,mp3(全称MPEG1Layer3,可不是MPEG3的缩写哦)等等,aac是Mp4官方指定的mp4音频规格。

和video一样,她也有两个profile:

-LC-AAC(LowComplexity)也被叫做MAIN@Level2

-HE-AAC(HighEfficiency)也被叫做AACSBR/AAC+/aacplus

再次抛开技术性的数据,HE比LC更高级一些,允许你在相同音质下已更低的bitrate编码。

帧间压缩。

其次,时间相关性的统计分析:

统计的结果表明,在间隔1~2帧的图像中,各像素只有10%以下的点,其亮度差值变化超过2%,而色度差值的变化只有1%以下。

采用的压缩方法:

分组:

把几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。

1.定义帧:

将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;

2.预测帧:

以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;

3.数据传输:

最后将I帧数据与预测的差值信息进行存储和传输。

I帧:

帧内编码帧

I帧特点:

1.它是一个全帧压缩编码帧。

它将全帧图像信息进行JPEG压缩编码及传输;

2.解码时仅用I帧的数据就可重构完整图像;

3.I帧描述了图像背景和运动主体的详情;

4.I帧不需要参考其他画面而生成;

5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);

6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;

7.I帧不需要考虑运动矢量;

8.I帧所占数据的信息量比较大。

P帧:

前向预测编码帧。

P帧的预测与重构:

P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。

在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。

P帧特点:

1.P帧是I帧后面相隔1~2帧的编码帧;

2.P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);

3.解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;

4.P帧属于前向预测的帧间编码。

它只参考前面最靠近它的I帧或P帧;

5.P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;

6.由于P帧是参考帧,它可能造成解码错误的扩散;

7.由于是差值传送,P帧的压缩比较高。

B帧:

双向预测内插编码帧。

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帧不是参考帧,不会造成解码错误的扩散。

注:

I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列。

x264参数介绍(一、帧类型和码率控制)

本页说明所有x264参数之目的和用法。

参数的排列相同于在x264--fullhelp出现的顺序。

参阅:

X264统计资料输出、X264统计资料档案和X264编码建议。

x264设定

说明

x264带有一些内置的文件。

要阅读此说明,执行x264--help、x264--longhelp或x264--fullhelp。

越后面的选项会提供越详细的资讯。

输入

以一个位置引数指定输入的视讯。

例如:

x264.exe--outputNULC:

\input.avsx264--output/dev/null~/input.y4m

当输入是rawYUV格式时,还必须告知x264视讯的分辨率。

你可能也要使用--fps来指定帧率:

x264.exe--outputNUL--fps25--input-res1280x720D:

\input.yuvx264--output/dev/null--fps30000/1001--input-res640x480~/input.yuv

默认

为了减少使用者花费时间和精力在命令列上而设计的一套系统。

这些设定切换了哪些选项可以从x264--fullhelp的说明里得知。

profile

默认:

说明:

限制输出文件的profile。

这个参数将覆盖其它所有值,此选项能保证输出profile兼容的视频流。

如果使用了这个选项,将不能进行无损压缩(qp0orcrf0)。

可选:

baseline,main,high

-BaselineProfile提供I/P帧,仅支持progressive(逐行扫描)和CAVLC

-ExtendedProfile提供I/P/B/SP/SI帧,仅支持progressive(逐行扫描)和CAVLC

-MainProfile提供I/P/B帧,支持progressive(逐行扫描)和interlaced(隔行扫描),提供CAVLC或CABAC

-HighProfile(也就是FRExt)在MainProfile基础上新增:

8x8intraprediction(8x8帧内预测),customquant(自定义量化),losslessvideocoding(无损视频编码),更多的yuv格式(4:

4:

4...)

建议:

不设置。

除非解码环境只支持main或者baselineprofile的解码。

preset

默认:

medium

一些在压缩效率和运算时间中平衡的预设值。

如果指定了一个预设值,它会在其它选项生效前生效。

可选:

ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslowandplacebo.

建议:

可接受的最慢的值

tune

默认:

说明:

在上一个选项基础上进一步优化输入。

如果定义了一个tune值,它将在preset之后,其它选项之前生效。

可选:

film,animation,grain,stillimage,psnr,ssim,fastdecode,zerolatencyandtouhou.

建议:

根据输入选择。

如果没有合适的就不要指定。

slow-firstpass

默认:

说明:

随着预设值机制在r1177版本的出现,使用–pass1会在解析命令行时增加以下设置:

*ref1

*no-8x8dct

*partitionsi4x4(iforiginallyenabled,elsenone)

*media

*submeMIN(2,subme)

*trellis0

如果设置preset=placebo则自动关闭此特性。

如果想显式关闭此特性,使用slow-firstpass。

帧类型

keyint

默认:

250

说明:

设置x264输出中最大的IDR帧(亦称关键帧)间距。

IDR帧是视频流的“分隔符”,所有帧都不可以使用越过关键帧的帧作为参考帧。

IDR帧是I帧的一种,所以它们也不参照其它帧。

这意味着它们可以作为视频的搜索(seek)点。

通过这个设置可以设置IDR帧的最大间隔帧数(亦称最大图像组长度)。

较大的值将导致IDR帧减少(会用占用空间更少的P帧和B帧取代),也就同时减弱了参照帧选择的限制。

较小的值导致减少搜索一个随机帧所需的平均时间。

建议:

默认值(fps的10倍)对大多数视频都很好。

如果在为蓝光、广播、直播流或者其它什么专业流编码,也许会需要更小的图像组长度(一般等于fps)。

参见:

min-keyint,scenecut,intra-refresh

min-keyint

默认:

auto(keyint/10)

说明:

参见keyint的说明。

过小的keyint范围会导致产生“错误的”IDR帧(比如说,一个闪屏场景,参见上一篇blog)。

此选项限制了IDR帧之间的最小距离。

建议:

默认,或者与fps相等

参见:

keyint,scenecut

no-scenecut

默认:

说明:

完全关闭自适应I帧决策。

参见:

scenecut

scenecut

默认:

40

说明:

设置决策使用I帧、IDR帧的阈值(场景变换检测)。

x264会计算每一帧与前一帧的不同程度并得出一个值。

如果这个值低于scenecut,那么就算检测到一个“场景变换”。

如果此时距离上一帧的距离小于min-keyint则插入一个I帧,反之则插入一个IDR帧。

较高的值会增加侦测到“场景变换”纪律。

更详细的工作原理可见http:

//forum.doom9.org/showthread.php?

t=121116

设置scenecut=0与no-scenecut等效。

建议:

使用默认值

参见:

keyint,min-keyint,no-scenecut

intra-refresh

默认:

off

说明:

让x264为每keyint数量的帧使用宏块内部编码取代IDR帧。

块以水平移动列的方式更新,也叫刷新波。

对于低延迟的流,这样可以让帧的尺寸比使用标准的IDR帧更加保持恒定。

而且这样可以增强视频流对丢包的容错能力。

这个选项会降低压缩率,所以在确实需要的时候才选择它。

还有一些有意思的事情:

1、第一帧依然是IDR帧。

2、内部宏块只在P帧中存在,刷新波在一个或多个B帧后的P帧中广泛存在。

3、主要的压缩率下降原因是在宏块中新(左边)的波并不能参考旧(右边)的波。

建议:

使用默认值

bframes

默认:

3

说明:

设置x264可使用的B帧的最大连续数量。

没有B帧时,一个典型的x264流帧类型是这样的:

IPPPPP…PI。

如果设置了-bframes2,那么两个连续的P帧就可以用B帧替换,然后就像这样:

IBPBBPBPPPB…PI。

B帧和P帧的区别在于它可以参照它之后的帧,这个特点让它可以显著地提升压缩率。

他们的平均品质受–pbratio选项的控制。

还有一些有意思的事情:

1、x264有2种B帧,一种可以作为参照帧,一种不能;

2、关于x264如何决策B帧或P帧,可以看看这个ffmpeg-devel邮件列表中的这一封http:

//article.gmane.org/p.video.ffmpeg.devel/29064。

这种情况下帧类型看起来就像这样IBBBPBBBPBPI(假设设置–bframes3)。

参见:

–no-b-adapt,–b-bias,–b-pyramid,–ref,–pbratio,–partitions,–weightb

b-adapt

默认:

1

说明:

设置B帧决策算法,这个选项会影响到x264使用P帧或者B帧。

0——关闭。

总是使用B帧。

和以前的no-b-adapt选项效果相同;

1——‘快速’算法。

快速,–b-frames越大速度越快。

推荐配合使用–bframes16;

2——‘最佳’算法,慢速,–b-frames越大速度越慢;

注意:

多趟编码时,只有第一趟编码的此选项起效,因为第一趟编码结束时,帧类型就已经被决定了。

b-bias

默认:

0

说明:

调节使用B帧的力度。

越大的值越偏向B帧,可以在-100和100之间选择。

100或-100不能保证完全或是全是B帧(使用–b-adapt0)。

请只在你认为你能做出比x264更好的码率控制时才使用这个选项。

参见:

–b-frames,–ipratio

b-pyramid

默认:

normal

说明:

允许B帧作为参照帧。

如果关闭,那么只有I帧和P帧才能作为参照帧。

可以作为参照帧的B帧的量化参数会介于P帧和普通B帧之间。

只在–b-frames设置大于等于2时此选项才生效。

如果是在为蓝光光盘编码,请使用none或者strict。

none——不允许B帧作为参照帧;

strict——一个图像组内只允许一个B帧参照帧,这是蓝光编码强制要求的标准;

normal——任意使用B帧参照帧;

参见:

–bframes,–refs,–no-mixed-refs

open-gop

默认:

none

说明:

Open-GOP是一个提升压缩效率的编码技术。

它有以下选项:

none——关闭

normal——开启

bluray——开启。

一个稍低效的open-GOP版本,因为normal模式不能用于蓝光编码

有些解码器不能完全支持open-GOP流,因此这个选项默认关闭。

如果要用,请测试你的解码器。

更多open-gop的资料可以看这个链接http:

//forum.doom9.org/showthread.php?

p=1300124#post1300124

no-cabac

默认:

说明:

关闭CABAC(ContextAdaptiveBinaryArithmeticCoder)压缩,使用较为低效的CAVLC(ContextAdaptiveVariableLengthCoder)。

这两者在压缩效率和解码效率上有10%-20%的差别。

ref

默认:

3

说明:

控制DPB(DecodedPictureBuffer)的大小。

可以在0-16之间选择。

简单地说,就是设置P帧可以选择它之前的多少帧作为参照帧(B帧的值要小1-2,取决于那个B帧能不能作为参照)。

最小可以选择值1,只参照自己前面的那帧。

注意H.264标准限制了每个level可以参照的帧的数量。

如果选择level4.1,1080p最大选4,720p最大选9。

参照:

–b-pyramid,–no-mixed-refs,–level

no-deblock

默认:

说明:

完全关闭内置去块滤镜。

不推荐使用。

参见:

–deblock

deblock

默认:

0:

0

说明:

调节H.264标准中的内置去块滤镜。

这是个性价比很高的选则。

详细的参数运作原理可以看这篇文章http:

//forum.doom9.org/showthread.php?

t=109747(看楼主和akupenguin的回复)。

SeeAlso:

–no-deblock

slices

默认:

0

说明:

设置每帧的分片数,强制使用矩形分片。

(会被–slice-max-size或–slice-max-mbs选项覆盖)

如果是在为蓝光光盘编码,设置为4。

如果不是,不要使用这个选项,除非你确定你需要它。

参见:

–slice-max-size,–slice-max-mbs

slice-max-size

默认:

0

说明:

设置每个分块包括NAL头的最大大小(bytes)。

(目前与–interlaced选项不兼容)

参见:

–slices

slice-max-mbs

默认:

0

说明:

设置每个分块包含的最大宏块数量。

(目前与–interlaced选项不兼容)

参见:

–slices

tff

说明:

开启隔行编码并设置上半场在前。

x264的隔行编码使用MBAFF,因此效率不如逐行扫描。

所以,仅在需要在隔行显示的设备上显示时才开启这个选项(或是送给x264之前无法进行反隔行扫描)。

这个选项会触发–pic-struct开启。

bff

说明:

开启隔行编码并设置下半场在前。

更多信息同–tff。

constrained-intra

默认:

说明:

开启SVC编码的底层要求的强制帧内预测。

选择每个人都无视SVC了,你也可以忽略这个设置。

pulldown

默认:

none

说明:

为你的输入流(逐行扫描的,固定帧率的)使用一组预设的“软性电视模式”。

“软性电视模式”在HandBrakeWiki里面有很好的解释。

可选的参数有:

none、22、32、64、double、triple、euro。

除了none之外的选项都会触发–pic-struct开启。

fake-interlaced

默认:

说明:

把流标志为隔行的但不按隔行编码。

用于编码25p和30p的蓝光兼容视频。

码率控制

qp

默认:

说明:

三种可选的码率控制方法之一。

设置x264使用固定量化参数模式。

给定的数量将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratioand–pbratio参数进一步算出。

QP模式适用固定的量化参数,这意味着最终的文件大小是不可知的(可以通过一些其他方法预测)。

设置为0将产出无损的输出。

相同视觉质量时,QP模式产出的文件比crf模式大。

QP模式将关闭自适应量化器,因为它是固定QP的。

这个选项和–bitrate和–crf是互斥的,三者只能选一个,它们背后的原理可以看这篇文章

一般而言crf都能代替QP模式,不过QP因为完全不需要预测所以它会运行地更快些。

参见:

–bitrate,–crf,–ipratio,–pbratio

bitrate

默认:

说明:

三种可选的码率控制方法之二。

设置x264使用固定目标比特率模式。

固定目标比特率意味着最终文件的大小是可知的,但是目标的质量是不可知的。

x264会试图让最终文件的整体码率与给定的码率相等。

参数的量纲为kilobits/sec(8bit=1byte)。

通常这个选项和–pass选项配合进行2趟编码。

这个选项和–qp和–crf是互斥的,三者只能选一个,它们背后的原理可以看这篇文章

参见:

–qp,–crf,–ratetol,–pass,–stats

crf

默认:

23.0

说明:

三种可选的码率控制方法之二。

固定ratefactor。

QP是固定量化器,bitrate是固定文件大小,crf则是固定“质量”。

crf可以提供跟QP一样的视觉的质量,但是文件更小。

crf的单位是ratefactor。

crf是通过降低那些“不那么重要”的帧的质量做到这一切的。

“不那么重要”意思是过于耗费码率又难以用肉眼察觉的帧,比如复杂或者超高速运行的场景。

省下来的码率会用在其它更有效的帧里。

crf编码比2趟编码快,因为它相当于省略了第1趟编码。

所以crf的最终码率也是不可预测的。

你应该根据应用场景来选择码率控制方式。

这个选项和–qp和–crf是互斥的,三者只能选一个,它们背后的原理可以看这篇文章

参见:

–qp,–bitrate

rc-lookahead

默认:

40

说明:

为mb-treeratecontrol(MacroblockTreeRatecontrol)和vbv-lookahead设置可用的帧的数量。

最大可设置为250。

对于mb-tree而言,调大这个值会得到更准确地结果,但也会更慢。

mb-tree能使用的最大值是–rc-lookahead和–keyint中较小的那一个。

对于vbv-lookahead而言,调大这个值会得更稳定和精确的码率控制。

vbv-lookahead能使用的最大值是如下公式算出来的:

MIN(rc-lookahead,MAX(–keyint,MAX(–vbv-maxrate,–bitrate)/–vbv-bufsize*–fps))

参见:

–no-mbtree,–vbv-bufsize,–vbv-maxrate

vbv-maxrate

默认:

0

说明:

设置VBV(VideoBufferingVerifier)可用的最大码率。

使用VBV会降低视频质量,只在真正需要的才设定它。

参见:

–vbv-bufsize,–vbv-init,

vbv-bufsize

默认:

0

说明:

设置VBV(VideoBufferingVerifier)可用的最大缓冲区,单位是kilobits。

使用VBV会降低视频质量,只在真正需要的才设定它。

参见:

–vbv-maxsize,–vbv-init,

vbv-init

默认:

0.9

说明:

设置重放之前必须先载入多大的VBV缓冲。

如果值小于1,那么大小就为vbv-init*vbv-bufsize。

如果大于1,则是以kbits为单位的值。

参见:

–vbv-maxsize,–vbv-bufsize,

crf-max

默认:

说明:

类似–qp-max,但是设置的是最大的ratefactor值而不是量化参数。

这个选项仅用于crf和vbv同时启用的时候。

它阻止x264使用小于给定值的ratefactor(也就是“质量”),哪怕会违反vbv。

一般用于流服务器。

更多的信息请看http:

//git.videolan.org/gitweb.cgi/x264.git/?

a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52。

参见:

–crf,–vbv-maxrate,–vbv-bufsize

qpmin

默认:

10

说明:

设置x264可以使用的最小量化器。

量化参数越小,输出越接近输入。

使用某些值时,x264的输出可以和输入看起来完全一样,虽然其实并不是精确相同的,通常就够了没有必要使用更多比特在宏块上了。

如果开启了自适应量化器(默认开启),则不鼓励提高qpmin的值,那样可能会降低帧的平坦部分的质量。

参见:

–qpmax,–ipratio

qpmax

默认:

51

说明:

qpmin的反面,设置x264可以使用的最大量化器。

默认值51是H.264标准中的最大值,质量非常低。

默认值51其实相当于没有设置qpmax。

如果你想控制x264输出的最低品质,也许你想要把这个值调低一点(调到30-40最低了),但一般而言不推荐调节这个值。

参见:

–qpmin,–pbratio,–crf-max

qpstep

默认:

4

说明:

设置2帧间量化器最大的可变值。

ratetol

默认:

1.0

说明:

这个参数有2个可能的含义:

1、在1趟bitrate编码时,这个参数控制x264可以偏离给定的平均目标比特率的百分比。

可以设置为inf完全关闭码率溢出侦测。

最低可以设置为0.01。

较高的值可以让x264更好地处理影片结束部分的复杂场景。

对于这个目的而言单位是百分比(1.0意味着允许1%的bitrate偏差)。

很多影片(比如说动作打斗片)在最后的片段里十分复杂。

1趟编码并不知道哪里是最复杂的片断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1