x264参数解释

 

x264参数解释(revision: 1024)
本文对应的是x264命令行模式,VFW方式也用相同的参数,不过是图形界面,可以自己找对应的英文。
新版本x264取消了--no-b-adapt、--nf、--b-rdo、--bime、--rceq参数,请不要再使用。

使用格式:x264 默认选项 -o 输出文件 输入文件 [长x宽]
输入支持格式:RAW/y4m/avi/avs(编译时可选)
输出支持格式:264/mkv/mp4(编译时可选)

x264的许多参数可以有-/--两种输入法。以下等价参数用“参数1/参数2 <必需数值格式>”表示。

-h/--help 列出较常用的选项
--longhelp 列出较常用的选项,更详细的帮助

帧类型选项:

-I/--keyint <整数> 最大IDR帧间距,默认250
-i/--min-keyint <整数> 最小IDR帧间距,默认25
--scenecut <整数> 画面动态变化限,当超出此值时插入I帧,默认40
--pre-scenecut         更快,但低精度的画面动态检测,需要多线程,并且在启用多线程时自动打开。
-b/--bframes <整数>     在IP帧之间可插入的B帧数量最大值,范围0~16,默认0
-b-adapt 自适应B帧判定模式。 0:关闭;1:快速;2:优化(高B帧时速度大大下降),默认1
--b-bias <整数> 控制插入B帧判定,范围-100~+100,越高越容易插入B帧,默认0
--b-pyramid             允许B帧做参考帧
--no-cabac              关闭内容自适应二进制算术编码(CABAC,高效率的熵编码)(会提高速度,但严重影响质量)
-r/--ref <整数>         最大参考帧数,范围0~16,默认1
--no-deblock            关闭环路滤波(一种除马赛克算法)
-f/--filter <alpha:beta>设置环路滤波的AlphaC和Beta的参数,范围-6-6,默认都为0
--interlaced 启用纯交错模式(用于隔行扫描的源)

码率控制选项:

-q/--qp <整数> 固定量化模式并设置使用的量化值,范围0~51,0为无损压缩,默认26
-B/--bitrate <整数> 设置平均码率
--crf <整数> 质量模式,量化值动态可变
--vbv-maxrate <整数> 平均码率模式下,最大瞬时码率,默认0(与-B设置相同)
--vbv-bufsize <整数> 码率控制缓冲区的大小,单位kbit,默认0
--vbv-init <小数> 码率控制缓冲区数据保留的最大数据量与缓冲区大小之比,范围0~1.0,默认0.9
--qpmin <整数> 设置最小量化值,范围0~51,默认10
--qpmax <整数> 设置最大量化值,范围0~51,默认51
--qpstep <整数> 设置相邻帧之间的量化值差,范围0~50,默认4
--ratetol <小数> 平均码率模式下,瞬时码率可以偏离的倍数,范围0.1~100.0,默认1.0
--ipratio <小数> I帧和P帧之间的量化系数,默认1.40
--pbratio <小数> P帧和B帧之间的量化系数,默认1.30
--chroma-qp-offset <整数> 色度和亮度之间的量化差,范围-12~+12,默认0
--aq-mode <整数>     自适应量化模式,可以在1帧中不同宏块间重新分配量化值,能提高暗部细节,但会提高码率。与--qp不能同时使用,0关闭,1开启,默认1
--aq-strength <小数>   AQ强度,减小低细节宏块的量化值,默认1.0
-p/--pass <1|2|3> 多次压缩码率控制
1:第一次压缩,创建统计文件
2:按建立的统计文件压缩并输出,不覆盖统计文件,
3:按建立的统计文件压缩,优化统计文件
--stats <字符串> 统计文件的名称,默认"x264_2pass.log"
--qcomp <小数> 线性量化控制,0.0为固定码率,1.0为固定量化值,默认0.6,只用于2-pass和质量模式
--cplxblur <小数> 根据相邻帧平滑量化值比例的最大值,范围0~99.9,默认20.0,只用于2-pass和质量模式
--qblur <小数> 对统计文件结果平滑量化值比例的最大值,范围0~99.9,默认0.5,只用于2-pass
--zones <z0>/<z1>/… 分段量化,格式为:<开始帧>,<结束帧>,<选项>,可选项为:q=<整数>(量化值)或b=<小数>(码率倍数)
--qpfile <字符串>      强制帧的类型和量化值

分析选项:

-A/--analyse <字符串> 动态块划分方法,默认"p8x8,b8x8,i8x8,i4x4"。可选项:p8x8/p4x4/b8x8/i8x8/i4x4;none/all(p4x4需要p8x8. i8x8需要--8x8dct)
--direct <字符串>       动态预测方式,默认"spatial"。可选项:none/spatial/temporal/auto
--direct-8x8 <-1|0|1>   动态预测方式宏块大小。 0: 4x4、1: 8x8、-1:尽可能减小体积,默认1
-w/--weightb 允许B帧加权预测(可以减少相邻B帧质量低的影响)
--me <字符串> 对全像素块动态预测搜索的方式,默认"hex",可选项:
dia:菱形搜索,半径1 (快)
hex:正六边形搜索,半径2
umh:可变半径六边形搜索
esa:全面搜索(很慢,而且效果与umh几乎相同)
tesa: 用hadamard方式进行全面搜索,比esa更慢
--merange <整数> --me为umh/esa时的搜索半径,最大64,默认16
--mvrange <整数>     设置运动矢量的最大范围,默认-1(自动确定)
--mvrange-thread <整数>  线程间最小缓冲,用于一些播放器的兼容性,默认-1(自动确定)
-m/--subme <整数> 动态预测和分区方式,可选项1~9,默认6(与压缩质量和时间关系密切,1是7速度的四倍以上)
1:用全像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
2:用半像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
3:用半像素块进行动态搜索,对每个块再用质量模式进行四分之一像素块精确搜索
4:用快速模式进行四分之一像素块精确搜索
5:用质量模式进行四分之一像素块精确搜索
6:进行I、P帧像素块的速率失真最优化(rdo)
7:进行全部帧像素块的速率失真最优化
8:进行I、P帧运动矢量及块内部的速率失真最优化
9:进行全部帧运动矢量及块内部的速率失真最优化(质量最好)
--psy-rd 在rdo中使用Psy算法(一种心理视觉模型)和Psy-Trellis量化,可提高细节,但会大幅提高码率。需要-m>6。默认 ["1.0:0.0"]。第一个值为Psy-rdo强度,第二个值为Psy-Trellis强度。
--mixed-refs 可以在一帧内使用不同参考帧
--no-chroma-me 不进行色度的动态预测
-8/--8x8dct 可以使用8x8的离散余弦变换(DCT)
-t/--trellis <整数>     Trellis量化,对每个8x8的块寻找合适的量化值,需要CABAC,默认0
0:关闭
1:只在最后编码时使用
2:一直使用
--no-fast-pskip 关闭快速P帧跳过检测
--no-dct-decimate       关闭P帧联合编码(可以增加细节,但也会增大体积)
--nr <整数> 噪声去除,范围0~100000,默认0
--deadzone-inter <整数>  设置inter模式下,亮度死区量化值,范围0~32,默认21。
--deadzone-intra <整数>  设置intra模式下,亮度死区量化值,范围0~32,默认11。
--cqm <字符串> 设置外部量化矩阵格式,默认"flat",可选项:jvt/flat
--cqmfile <字符串> 读取JM格式的外部量化矩阵文件,自动忽略其他--cqm*选项
--cqm4 <list> 设置4x4的量化矩阵,用逗号分开,范围1~255的16个整数
--cqm8 <list> 设置8x8的量化矩阵,用逗号分开,范围1~255的64个整数
--cqm4i/--cqm4p/--cqm8i/--cqm8p 设置I、P帧不同的量化矩阵
--cqm4iy/--cqm4ic/--cqm4py/--cqm4pc 设置亮度、色度不同的量化矩阵

视频标准化选项:
这些选项与编码无关,不过如果要用mp4之类的播放器,可以设置,风险自担

--overscan <字符串> 过扫描线,默认"undef"(不设置),可选项:show(观看)/crop(去除)
--videoformat <字符串> 视频格式,默认"undef",可选项:component/pal/ntsc/secam/mac/undef
--fullrange <字符串>    Specify full range samples setting,默认"off",可选项:off/on(我也不明白这是干什么的,请高手指点)
--colorprim <字符串>    原始色度格式,默认"undef",可选项:undef/bt709/bt470m/bt470bg,

smpte170m/smpte240m/film
--transfer <字符串>     转换方式,默认"undef",可选项:

undef/bt709/bt470m/bt470bg/linear,log100/log316/smpte170m/smpte240m
--colormatrix <字符串>  色度矩阵设置,默认"undef",undef/bt709/fcc/bt470bg,smpte170m/smpte240m/GBR/YCgCo
--chromaloc <整数> 色度样本指定,范围0~5,默认0

输入、输出选项:

-o/--output 指定输出文件
--sar width:height 设置采样比例设置,表示采样像素长宽比
--fps <小数|rational> 设定帧率
--seek <整数> 设定起始帧
--frames <整数> 最大编码帧数
--level <字符串> 类似于MPEG4里的"profile&level",表示编/解码等级
-v/--verbose 显示每一个帧的信息
--progress 显示编码进程
--quiet 安静模式
--no-psnr 关闭PSNR计算
--no-ssim            关闭SSIM计算
--threads <整数> 编码线程(使用多线程技术)
--thread-input 在自有线程中运行Avisynth
--non-deterministic   非确定性。可以稍微减少多线程的开销
--asm <整数> 覆盖CPU检测
--no-asm 关闭全部CPU优化指令
--visualize 显示编码帧信息图,和XVID类似
--dump-yuv <字符串>   保存帧为yuv格式
--sps-id <整数> 设置SPS和PPS的ID值,默认0
--aud 使用数据定义符号

由 MeteorRain 于 07-25-2006 00:23 发表:

x264的许多参数可以有-/--两种输入法,笔者也不知道为什么 << 到linux的世界里混一段时间就知道了

-x 是短参数
--xxxxx 是长参数

anyway 这贴不错,鼓励下,继续翻吧~(把mplayer上那篇超详细的解释也翻一下就好了LOL)

 

由 kykdu 于 07-25-2006 16:01 发表:

谢谢大家的回复。
to 天地逍遥:
我不太喜欢所谓的“推荐配置”,因为个人的情况有所不同,而x264的设置太多了,很难有普适的配置。以下我把我较熟悉的参数分类稍加说明,仅供参考。

首先,文件的平均量化值一般不应低于24(相当于XVID的Q=4),否则会有“不堪入目”的感觉(个人感受)。
现在x264在高码率下对细节的保留不如XVID,可能与其内部的环路滤波算法有关。相对的,出现的噪点和马赛克也比XVID少很多。究竟孰优孰劣,大家见仁见智。
不建议使用-B/--vbv*的ABR方式,这种方式对音频很好,对视频并不适合。

帧类型选项,这里几乎都是对压缩比影响较大的参数:
-b/--bframes 可以大大提高压缩比的参数,非用于二次压制的片源一般要设>1。至于设置多少,见仁见智。
-r/--ref     对质量和压缩比都有提高的参数,一般要设>1。具体数值同上。
-I/--keyint;-i/--min-keyint 一般来说压制动画时,可以增大-I,减小-i的值。具体数值可以参考XVID。
--b-pyramid  对速度影响很小,一般开启。

码率控制选项:
--qcomp      2-pass专用。可以参考XVID的曲线压缩说明。建议1.0。

分析选项,这里几乎都是对质量影响较大的参数:
-m/--subme   越大质量越好,不过编码速度也会急剧下降。建议:只要机器撑得住,设为7。
-A/--analyse 分析当然是越多越好。建议:只要机器撑得住,设为all。
-w/--weightb 对质量和压缩比都有提高,且对速度影响极少。建议开启。
--bime       同上,建议开启。
-8/--8x8dct  同上,建议开启。
-t/--trellis 和XVID的差不多,提高质量,降低速度。建议开启。
--b-rdo      同上,建议开启。
--me   建议设为umh,esa实在太慢了,而且质量提高极不明显。
--mixed-refs 有效,但对速度影响较大。建议尽量开启。
--direct     建议auto。

输入、输出选项:
--threads    多核、多线程处理器推荐。
--quiet;--no-psnr 可以稍微加快编码速度

需谨慎设置的参数,一般可以不去动:
--qpmin;--qpmax;--qpstep 一般可以不动,有特殊质量要求的除外
--scenecut;--ipratio;--pbratio:--merange 网上争论不少,唯一结论是:没有最优值
--cqm* 可以选择网上制作好的量化矩阵,不过还是那句话:没有最优值

to kagakadaj
MR大大主要讲的是用me-gui的设置,我写的是命令行模式。

to wolfsoft
很遗憾,mplayer的中文版帮助早已outdate了。否则,我根本不用写这篇东西。

另外,--fullrange和--level的作用,有那位大大知道,先谢谢了。

由 tct66 于 07-25-2006 21:28 发表:

-------------------------------------------------
x264在高码率下对细节的保留不如XVID
-------------------------------------------------
奇怪,這是誰說的???
很久以前測試過,x264沒用自定義矩陣
x264-Q14細節保留相當於XviD的CG MATRIX的Q2
更何況x264-Q14以下的高質量,另外還可以用自定義矩陣

 

如你所述,正说明我的说法正确。
x264的Q值与XVID的Q值是不同的。转换公式为:H264QP = 12 + 6*log2(XVIDQP)。也就是说,XviD的Q2相当于x264的Q18。

 

 

quote: 最初由 风雪云 发布
好帖子,但是不会用~~
顺便问下,怎么用AVS来写这些参数呢?清闲的大虾们能否HELP ME?



这些不是AVS内滤镜参数,而是外部编码器的参数。
例如:
x264 -q 18 -b 4 OP.avs -o OP.mkv
用量化值18压缩OP.avs,输出文件为OP.mkv,允许最大连续B帧数量为4。

 

 

由 wolfsoft 于 07-26-2006 12:33 发表:

我补充一些.正如"视频标准化选项"在描述中所说的,这些选项是需要"设备支持",所以它们压出来的效果一般不为普通电脑播放器支持.就象"--sar"这个,设置非1:1(这里顺便说一下,楼主翻译不完全,应该是"采样比例设置",也就是象素的长宽比,比如人人皆知的NTSC10:11,PAL59:54),在AU经directshow读入及MPC播放时都没有反应.但奇妙的是mplayer回放居然有反应!用mplayer播放时显示成了长长的一条.看来mplayer更象一个"设备".所以这一部分的选项并不是为电脑所订,估计是x264野心勃勃地要为将来支持AVC的HD-DVD player准备.
这样也就可以理解所谓"fullrange",估计跟m2v里的那个一样,就是YUV-RGB的宽度直接转换([0~255]=>[0~255]).至于究竟是output上的还是input上的,连mplayer也无法反映,我更倾向于output上的.

至于level,也就是meGUI里x264设置第一页右下角那个"AVC Level".你就把它理解成xvid里的"profile&level"就行了.反正平时也没人用....

 

由 wolfsoft 于 07-26-2006 12:40 发表:

quote: 最初由 kykdu 发布
现在x264在高码率下对细节的保留不如XVID,可能与其内部的环路滤波算法有关。相对的,出现的噪点和马赛克也比XVID少很多。究竟孰优孰劣,大家见仁见智。



如tct所说.即使按照你说的,我甚至用Q20,试压出来码率只有XVID Q2的65%,PSNR仍然高过xvid.而且2pass的话码率只取xvid的一半,psnr仍旧高!可见目前x264已经基本兑现"AVC达到画质要求码率低一半"的诺言.

至于你说的inloop问题,你可以不要选deblocking啊.我做上面的测试时就没有钩这个.

 

 

由 kykdu 于 07-26-2006 20:58 发表:

quote: 最初由 kykdu 发布

现在x264在高码率下对细节的保留不如XVID,可能与其内部的环路滤波算法有关。相对的,出现的噪点和马赛克也比XVID少很多。究竟孰优孰劣,大家见仁见智。



看来这句话有误导大家的嫌疑。其实我的意思很明白,x264在高码率下对细节的保留不如XVID的原因是内部的环路滤波算法。像wolfsoft大大这样关闭in-loop之后,当然会使PSNR值提高。而且,提高的相当大。我个人测试,可以提高2~4个量化值(CQ模式)。但是,是否因此关闭deblocking呢?如我所说,大家见仁见智。

以下是个人观点,欢迎发表不同意见。
一开始我也是关闭deblocking的,但是有一些因素使我改变了初衷。
1、mencoder的帮助中明确指出:it is not recommended to disable it.(不推荐关闭)
2、x264的profiles(mirror05.x264.nl/Sharktooth/force.php?file=./MeGUI/profiles/MeGUI-x264_generic_profiles_v27.zip)里,只有三个文件设置关闭deblock,分别是1P-Maxspeed、CQ-Lossless和PD-Xbox_HiRes。大家看名字就可以知道都是干嘛用的。而像AE-Maxquality、HQ-Insane之类都没有关闭deblock。DOOM9里大部分人也都是开启deblock的。
3、我个人喜欢柔和干净的画面,对噪点和杂波十分反感。当然,这是个人的问题。
因此,我个人是倾向于开启deblock。个人观点,仅供参考。

最后,感谢wolfsoft对sar/level的解释。

 

 

mencoder居然不推荐关闭么?然则meGUI的帮助里却是"recommended value:disable"

我认为,如果一个视频前期处理做得好,本身就没多少噪声,那大可以关了deblocking,全力保证画面的完整性.而如果自己心里没底,前期处理并不好,这个时候会由于采样,DCT,量化而产生所谓三大artifact,这种情况下才有必要启动象inloop这样的anti-artifact滤镜.所以我们应该把deblocking这样的东西理解成一个postprocessor--当然是一个在编码过程中就起作用的postprocessor,这也是inloop强悍的地方.

这倒让我想起以前(才几个月就感觉好遥远啊...)hlyx大力推崇vp7,结果大家试下来发现只有喂"干净"的画面才会有好的效果,否则就惨不忍睹.现在想想,大概就是vp7缺乏这种内置的anti-artifact filter.en,伊果然跟MPEG4不是同类啊....

 

 

由 tct66 于 07-27-2006 21:10 发表:

deblocking filter是在解碼時產生作用...
ffdshow解碼可以手動關閉
coreavc解碼也可以關閉或啟用


EDIT:
另外用VP6編碼,解碼的時候要設定pp4,不然撥放出來的就和wmv關閉pp一樣
噪聲/msk滿天飛...
VP7就沒試過...

 

 

由 kykdu 于 07-28-2006 12:59 发表:

quote: 最初由 tct66 发布
deblocking filter是在解碼時產生作用...
ffdshow解碼可以手動關閉
coreavc解碼也可以關閉或啟用



这是很严重的理解错误呢。
deblocking filter是in-loop,是在编码时起作用的。
不信的话可以自己去看源代码里的encoder.c,里面有什么时候使用deblocking filter编码的判定,其中明确了当qp <= 15时deblock自动关闭。frame.c是算法文件。
ffdshow、coreavc都是外部的filter,对in-loop是无效的。

 

 

由 kykdu 于 07-28-2006 17:56 发表:

开启当然是有变化了
我说过了,ffdshow和coreavc是外部的解码,对in-loop无效,但没说对最终输出无效啊。
你可以这样试:
压制一段关闭deblock的影片,再分别用ffdshow或coreavc解码,开启/关闭deblock试试。如果还是有变化,就说明解码器的设置与in-loop无关。

由 tct66 于 07-28-2006 18:18 发表:

quote: 最初由 kykdu 发布
开启当然是有变化了
我说过了,ffdshow和coreavc是外部的解码,对in-loop无效,但没说对最终输出无效啊。
你可以这样试:
压制一段关闭deblock的影片,再分别用ffdshow或coreavc解码,开启/关闭deblock试试。如果还是有变化,就说明解码器的设置与in-loop无关。



這個早就試過了,無變化
你試試看吧...,我等你的截圖
另外,你還沒告訴我你的deblocking filter的設置...

__________________
來自
皓月狼影
bbs.lloup.com

由 wolfsoft 于 07-28-2006 19:13 发表:

摘一段H264标准的书里的一段话:

quote: 3.5 Adaptive Deblocking Filter

The block-based structure of the H.264/AVC architecture
containing 4×4 transforms and block-based motion compensation,
can be the source of severe blocking artifacts.
Filtering the block edges has been shown to be a powerful
tool to reduce the visibility of these artifacts. Deblocking
can in principle be carried out as post-filtering,
influencing only the pictures to be displayed. Higher visual
quality can be achieved though, when the filtering
process is carried out in the coding loop
, because then all
involved past reference frames used for motion compensation
will be the filtered versions of the reconstructed
frames. Another reason to make deblocking a mandatory
in-loop tool in H.264/AVC is to enforce a decoder to
approximately deliver a quality to the customer, which
was intended by the producer and not leaving this basic
picture enhancement tool to the optional good will of the
decoder manufacturer.



所以我支持 kykdu 的说法

__________________
感谢次贷,全球革命一片大好
下面就看谁绷不住要做反面教员了

=========================

FANSUB的历史,又翻过了新的一页

由 tct66 于 07-28-2006 20:09 发表:

-----------------------------------------------------------------------------
Deblocking
can in principle be carried out as post-filtering,
influencing only the pictures to be displayed.
-------------------------------------------------------------------------------
以下是Doom9的說明
postprocessing/filtering (via the decoder, done on the final output)
-------------------------------------------------------------------------------
Loop/Deblocking Filter:
in contrary to prefiltering (for example via avisynth, done on the input), or

postprocessing/filtering (via the decoder, done on the final output), LoopFiltering is applied

during the encoding process on every single frame, after it got encoded, but before it gets used

as reference for the following frames. This helps avoiding blocking artifacts, especially on low

bitrates, but will slow down en/decoding
--------------------------------------------------------------------------------

Q19的質量,為甚麼在H264開啟deblock filter
ffdshow解碼,勾選"skip deblocking always",會有馬賽克???
不勾選就沒有
而且ffdshow解碼設置默認的選項"skip deblocking always"是unchecked
另外wmv9/VP6都有inloop filter,為甚麼在解碼的時候PP要開啟才能避免噪聲/msk的出現???

__________________
來自
皓月狼影
bbs.lloup.com

由 kykdu 于 07-29-2006 00:04 发表:

首先要说明的是,tct66所做的实验结果是正确的。关闭deblock压缩的影片,开启/关闭deblock无变化;开启deblock的影片才有影响。ffdshow和coreavc都是如此。
但是,这并不能证明tct66所说的结论。因为我发现了几个细节:
1、开启deblock的影片,在其它设置相同的情形下,比关闭deblock压缩的体积小。如果deblock是编码结果以外的数据,这是不可能的。
2、开启deblock的影片,即使解码器里关闭deblock,输出的结果也与关闭deblock压缩的不同,质量变差了。

详细的说明如下:
H264去块滤波又称环路滤波(loop filter),为什么称环内滤波,环内滤波就是讲H264在编码过程就进行了滤波处理, 这个去块滤波位于编码环内,deblock后还要进入DPB(解码帧缓冲),做为对下一个可用帧的参考帧。有的去块却不是位于环内,只是进入显示缓冲前做deblock。
H264设置了两种动态图像参考模式,Intra模式用未经滤波的图像做参考,在Inter模式使用经过滤波的图像作参考。在X264源代码macroblock.c文件中,明确指出:“Used in INTER macroblock”。如同tct66引用的一段“LoopFiltering is applied during the encoding process on every single frame, after it got encoded, but before it gets used as reference for the following frames.(它作用于每个帧编码之后,但在被用作后面帧的参考之前。)”所说的,Inter模式对帧内的参考用原始的图像数据,而帧间参考的时候用重建的图像。解码时,通过重建参考帧显示图像。
综上所述,X264的deblock是编码时进行的,解码器关闭的只是通过设置的deblock值重建参考帧这个过程。这样,只能使用原始帧作参考。由于内部使用的是经过滤波的图像,因此会使误差增大。这就是编码时开启deblock的影片如果关闭deblock播放时效果不如关闭deblock编码的影片的原因。

这也可以完美解释上面提到的细节和tct66提出的疑问。

Q19的质量,为什么在H264开启deblock filter
X264的设计者比我们的要求都高,qp <= 15时deblock才会自动关闭。

ffdshow解码,勾选"skip deblocking always",会有马赛克???不勾选就没有。
wmv9/VP6都有inloop filter,为什么在译码的时候PP要开启才能避免噪声/msk的出现???
使用原始帧作参考,误差增大。

ffdshow译码设置默认的选项"skip deblocking always"是unchecked
关闭deblock压缩的影片,开启/关闭deblock无变化;开启deblock的影片,当然应该开启。这样,有什么必要检测呢?
*********************************
我不太喜欢推荐参数。我先将这两个参数的意义说明一下,之后再提出我常用的参数,仅供参考。
Alpha和Beta两项是所谓的“噪声门槛”,都是负值时使画面显得锐化,正值时显得柔和。不同之处在于,Alpha在块输入时进行检测,Beta则是输出时进行。这样,产生的效果就不同了。Alpha锐化在整块的颜色区域内保留了较多细节,锐化的程度不及Beta强。Beta锐化在整块颜色的区域内偏柔,但是保存下来的细节得到了锐化。给人感觉就像经过了柔化之后又进行了锐化处理。Alpha柔化过的画面整块的颜色区域显得干净,保留下来的细节较Beta清晰,同值时柔化的程度不及Beta强。经过Beta正值处理的画面,颜色交界处线条变得较规则,给人感觉在柔化的同时又加了锐化,柔化作用更强一些。

网上普遍采用Alpha=Beta的方式设置。一般可以使用默认值0,如果源比较模糊,例如FieldDeinterlace的文件可以设为-1;如果源噪点、杂波多,可以试试设成1。2/-2就稍有点过,除非画面太差,否则不推荐。

最后,感谢tct66所做的实验和有理有据的质疑。

 

由 wolfsoft 于 07-29-2006 12:53 发表:

来晚了,被kykdu抢先了,那我就补充两张图吧.
kykdu说得已经很明确了.问题的关键就是cli内置decoder,而这个decoder所做的deblock只输入到buffer中,也就是图1的"memory".在decoder输入超过ref数量的帧时,旧的经过inloop处理的帧就会被"洗"掉.所有贮存在硬盘上的帧都是未被deblock处理(然而却参考了前面经过了处理的帧)的帧.
而在图2中,则是直接输出到视频缓冲.

H264编码器流程图



H264解码器流程图



以上都是我看标准总结出来的.而kykdu居然靠看代码总结出来,牛人啊....

下面我说点我所发现的和kykdu不一样的.我用filter 3:3试压,结果码率下降了100kbs左右,PSNR反而上升了0.3dB.这和kykdu前面说的两点(体积变大,PSNR下降)都不同,诡异.....

而且还有一点让人难以明确,究竟解码器是通过什么来判断一个帧是否需要做deblock?为什么压制时不开deblock,解码器开不开都没有影响?按理说,即使压制时不开deblock,而解码时打开了,那么最少会对当前帧做deblock处理,而使这个帧解码下来和解码器不开deblock有所差异,但事实上这种差异并没有发生.一个反例是,如果不开deblock,用deblock压出来的片断,虽然解码下来整体的PSNR下降了2之多,但第一帧(I帧)却上升了0.2左右.说明deblock确实起了"洗"(套用DeathTheSheep的说法)的作用.那么为什么编码没开deblock,这个"洗"就不起作用呢?
所以我觉得编码时或许在每个帧中都插了一个有关deblock的flag.不知道是否如此,请分析过x264代码的朋友们再研究研究.

__________________
感谢次贷,全球革命一片大好
下面就看谁绷不住要做反面教员了

=========================

FANSUB的历史,又翻过了新的一页

由 kykdu 于 07-29-2006 20:36 发表:

quote: 最初由 kykdu 发布

1、开启deblock的影片,在其它设置相同的情形下,比关闭deblock压缩的体积。如果deblock是编码结果以外的数据,这是不可能的。
2、开启deblock的影片,即使解码器里关闭deblock,输出的结果也与关闭deblock压缩的不同,质量变差了。



谢谢wolfsoft的补充和指正。
上面第一点的确是打错了,已经改正。开启deblock的影片要比关闭deblock的小,我和wolfsoft的结果是相同的。不过请大家看在我是连夜赶工的份上原谅我吧。
关于第二点,可能是片源和参数不同。3:3这样的参数在较小的量化值下会使PSNR下降,但在较大的量化值下可能升高。不同的片源结果也会不同。

关于deblock的flag,的确如此。在encoder.c里,x264_slice_header_write函数为每一个块都写入了flag,对做过deblock的块,还写入了offset。

由 xwenwei 于 08-24-2006 14:55 发表:

支持技术共享交流研究!

学习学习!

由 falalif2005 于 09-10-2006 11:30 发表:

怎么那么深奥啊!!~~~
有没基础的东西啊?

__________________
dadada

由 Wealls 于 09-10-2006 21:34 发表:

好贴

由 GOD_HIKARU MK2 于 12-09-2006 22:32 发表:

= = 很久没跟新了。齐了么

__________________
= =

由 蜡笔小龟 于 12-21-2006 20:01 发表:

为什么我在Profile下拉菜单中找不到选项~
升级系统中好像也没有Profile~

由 mot 于 01-20-2007 15:04 发表:

比较详细了,反而希望有时间的朋友能出一篇实战式的教程贴..

由 吉祥如意 于 01-25-2007 17:40 发表:

为什么影音技术的东西都好复杂啊

由 寒小梅 于 02-22-2007 19:06 发表:

进来看看!!有些参数貌似太专业 有点看不懂 = =

由 techneek 于 02-26-2007 19:07 发表:

相见恨晚啊~

没想到这里n多牛人~~以后一定要常来~

由 wtq 于 05-11-2007 19:19 发表:

kykdu消失了,还有其他牛人也不常见了,跑哪了呢

由 月光舟 于 05-30-2007 11:44 发表:

学到了~ 谢谢

__________________
对普通的动画没有兴趣
你们之中要是有喜欢
萌番
恶搞番
后宫番(男女向均可)
恋爱喜剧番的话
就尽管来找我吧!
关注者请播打QQ群40218550
有意参与制作者请播打QQ热线476159842
以上~

由 gillsex 于 07-29-2007 17:16 发表:

看得头晕晕了...

由 vAnA 于 08-09-2007 01:07 发表:

好复杂,还要学习……

 

 

你可能感兴趣的:(多线程,优化,算法,filter,reference,output)