2008-05-31

C中复杂的结构题的访问注意

今天写了一个模块,主要是一个处理成员内容为一个结构体的队列抽象数据类型,主函数的代码如下:
int main(int argc, char** argv)
{
member testone={"sadfsaf","asdfijvasdf","sdfsjdflsdf"};
member testtwo={"2222dsf","222dfsdf","222dsafff"};
member testthree={"3333dsf","333dfsdf","333dsafff"};
queue_node *test;
int i;

creat_queue(3);
insert_member(&testone);
insert_member(&testtwo);
insert_member(&testthree);
for(i=0;i<3;i++)

printf("the first is %s\n%s\n%s\n",test->mvalue.addrs,test->mvalue.subadds,test->mvalue.opts);

delete_member();
}

return (EXIT_SUCCESS);
}

主要看蓝色的部分,其实当我们面对简单的结构体的时候我们能够很明白
假设p为一结构体名,那么访问结构体成员直接用p.addrs。
假设pp为一指向结构体的指针的时候,那么访问结构体成员就用pp->addrs
但是这里我使用的是一个包涵结构体成员的结构体,第一次写的时候就错写成p->mvalue->addrs了。所以在声明了多重的结构题并且使用指针的时候这个问题是很可能迷惑我们的。

2008-05-21

官网上的mplayer中文说明文档Part.5(完)

环境变量


有环境变量用于控制 MPlayer 和 MEncoder 的行为。


MPLAYER_CHARSET (也请参见 −msgcharset)


转换控制台的消息显示为指定字符集 (默认值是自动检测: autodetect)。值 "noconv" 表示不要转换。


MPLAYER_HOME


MPlayer 寻找设置的目录。


MPLAYER_VERBOSE (也请参见 −v 和 −msglevel)


对所有的消息模块设置初始冗赘级别 (默认是: 0)。最终的冗赘级别是 −msglevel 5 的级别再加上 MPLAYER_VERBOSE 的值。


libaf:


LADSPA_PATH


如果设置了 LADSPA_PATH, 它会寻找指定的文件。如果没设置, 你就必须提供完整的路径名。 FIXME: 这也在 ladspa 一节有提到.


libdvdcss:


DVDCSS_CACHE


指定目录以储存标题的钥匙值。这会加速 DVD 在缓存中的译码过程。如果 DVDCSS_CACHE 目录不存在就创建它, 并创建以 DVD 标题或生产日期为名称的子目录。如果 DVDCSS_CACHE 没设置或是空的, libdvdcss 会使用默认值为 Unix 的 "${HOME}/.dvdcss/" 或 Win32 的 "C:\Documents and Settings\$USER\Application Data\dvdcss\"。特殊值 "off" 停用缓存。


DVDCSS_METHOD


设置 libdvdcss 用于解读加密盘片的认证和解密方法。可以是 title(标题), key(钥匙) 或 disc(盘片) 的其中之一。


key


是默认方法。 libdvdcss 会使用一套计算过的播放器密钥,尝试取得盘片的钥匙。如果驱动器不认识播放器的任何钥匙就会失败。


disc


是钥匙方法失败的备用方法。代之使用播放器钥匙, libdvdcss 会使用蛮横暴力的算法破解盘片钥匙。此过程需要 CPU 高强度运行和 64 MB 内存以储存临时的数据。


title


是所有其它方法的备用方法。它不依靠与 DVD 设备交换钥匙, 而是使用一种密码机(crypto)攻击法来猜测标题钥匙。此失败的情况极少, 因为盘片上没有足够的加密数据来低档统计攻击法, 但是另一方面这是仅有的方法来破译储存在硬盘上的 DVD, 和 RPC2 设备上不同地区码的 DVD。


DVDCSS_RAW_DEVICE


指定使用的原始设备。确切的用法依赖于你的操作系统, 例如 Linux 工具建立的原始设备是 raw(8)。请注意在大多数操作系统上, 使用原始设备需要高度对齐的缓冲(aligned buffers): Linux 需要 2048 字节(等于 DVD 扇区大小)的对齐。


DVDCSS_VERBOSE


设置 libdvdcss 冗赘级别。


0


一点都不输出消息。


1


输出错误消息到 stderr。


2


输出错误和调试消息到 stderr。


DVDREAD_NOKEYS


启动时跳过访问所有的钥匙。目前停用。


HOME


FIXME:


待解释。


libao2:


AO_SUN_DISABLE_SAMPLE_TIMING


FIXME: 待解释。


AUDIODEV


FIXME: 待解释。


AUDIOSERVER


指定 nas 音频输出驱动应该去连接的和传输的网络音频系统(Network Audio System)服务器。如果没设置, 就使用 DISPLAY。传输可以是 tcp 和 unix 其中之一。语法是 tcp/<某主机>:<某端口>, <某主机>:<实例号> 或 [unix]:<实例号>。 NAS 基端口是 8000 而 <实例号> 在其之上再增加。


示例:


AUDIOSERVER=somehost:0


连接到 NAS 服务器, 某主机上使用默认的端口和传输协议。


AUDIOSERVER=tcp/somehost:8000


连接到 NAS 服务器, 某主机上监听 TCP 端口8000。


AUDIOSERVER=(unix)?:0


连接到 NAS 服务器, 本地主机上的实例 0 使用 unix 域套接口。


DISPLAY


FIXME: 待解释。


vidix:


VIDIX_CRT


FIXME: 待解释。


osdep:


TERM


FIXME:


待解释。


libvo:


DISPLAY


FIXME: 待解释。


FRAMEBUFFER


FIXME: 待解释。


HOME


FIXME:


待解释。


libmpdemux:


HOME


FIXME:


待解释。


HOMEPATH


FIXME: 待解释。


http_proxy


FIXME: 待解释。


LOGNAME


FIXME: 待解释。


USERPROFILE


FIXME: 待解释。


libmpcodecs:


XANIM_MOD_DIR


FIXME: 待解释。


GUI:


CHARSET


FIXME: 待解释。


DISPLAY


FIXME: 待解释。


HOME


FIXME:


待解释。


libavformat:


AUDIO_FLIP_LEFT


FIXME: 待解释。


BKTR_DEV


FIXME: 待解释。


BKTR_FORMAT


FIXME: 待解释。


BKTR_FREQUENCY


FIXME: 待解释。


http_proxy


FIXME: 待解释。


no_proxy


FIXME: 待解释。
相关文件


/usr/local/etc/mplayer/mplayer.conf


MPlayer 范围的设置


/usr/local/etc/mplayer/mencoder.conf


MEncoder 范围的设置


~/.mplayer/config


MPlayer 用户设置


~/.mplayer/mencoder.conf


MEncoder 用户设置


~/.mplayer/input.conf


输入绑定 (按键的完整列表请参见 "−input keylist" 的输出)


~/.mplayer/gui.conf


GUI 配置文件


~/.mplayer/gui.pl


GUI 播放列表


~/.mplayer/font/


字体目录 (里面必须有一个 font.desc 文件和带 .RAW 后缀的文件。)


~/.mplayer/DVDkeys/


缓存的 CSS 钥匙


假如播放文件是 /path/to/movie.avi, MPlayer 按以下顺序搜索字幕文件:


/path/to/movie.sub
~/.mplayer/sub/movie.sub
MPLAYER的使用范例


快速上手播放 DVD:

mplayer dvd://1

播放日文对话和英文字幕:

mplayer dvd://1 −alang ja −slang en

只播放第 5, 6, 7 场景:

mplayer dvd://1 −chapter 5−7

只播放第 5, 6, 7 标题:

mplayer dvd://5−7

播放多视角 DVD:

mplayer dvd://1 −dvdangle 2

从不同的 DVD 设备播放:

mplayer dvd://1 −dvd−device /dev/dvd2

从目录中的 VOB 文件播放 DVD 视频:

mplayer dvd://1 −dvd−device /path/to/directory/

复制 DVD 标题到硬盘, 保存文件名为 title1.vob :

mplayer dvd://1 −dumpstream −dumpfile title1.vob

使用 dvdnav 播放一张 /dev/sr1: 路径下的 DVD 碟片

mplayer dvdnav:////dev/sr1

播放 HTTP 流:

mplayer http://mplayer.hq/example.avi

播放 RTSP 流:

mplayer rtsp://server.example.com/streamName

转换字幕为 MPsub 格式:

mplayer dummy.avi −sub source.sub −dumpmpsub

转换字幕为 MPsub 格式但不播放:

mplayer /dev/zero −rawvideo pal:fps=xx −demuxer rawvideo −vc null −vo null −noframedrop −benchmark −sub source.sub −dumpmpsub

从标准的 V4L 输入:

mplayer tv:// −tv driver=v4l:width=640:height=480:outfmt=i420 −vc rawi420 −vo xv

回放 Zoran 卡 (旧方法, 废弃):

mplayer −vo zr −vf scale=352:288 file.avi

回放 Zoran 卡 (新方法):

mplayer −vo zr2 −vf scale=352:288,zrmjpeg file.avi

以直通模式播放 DTS-CD:

mplayer −ac hwdts −rawaudio format=0x2001 −cdrom−device /dev/cdrom cdda://

你可以使用 −afm hwac3 代替 −ac hwdts。调整‘/dev/cdrom’使其与你系统中的 CD-ROM 设备相适应。如果你的外部的接收设备支持解码原始 DTS 音频流,那么你可以通过 cdda:// 直接播放,而不用设置格式,hwac3 或 hwdts。

只用两个扬声器播放 6-声道 AAC 文件:

mplayer −rawaudio format=0xff −demuxer rawaudio −af pan=2:.32:.32:.39:.06:.06:.39:.17:-.17:-.17:.17:.33:.33 adts_he-aac160_51.aac

你可能想用 pan 值播放片断 (例如用放大值) 以增加音量或者避免剪切。

使用geq滤镜产生的颠倒的棋盘:

mplayer −vf geq=’128+(p(XY)−128)*(0.5−gt(mod(X/SW128)64))*(0.5−gt(mod(Y/SH128)64))*4’

MENCODER的使用范例


编码 DVD 标题 #2 中选择的场景:

mencoder dvd://2 −chapter 10−15 −o title2.avi −oac copy −ovc lavc −lavcopts vcodec=mpeg4

编码 DVD 标题 #2, 缩放到 640x480:

mencoder dvd://2 −vf scale=640:480 −o title2.avi −oac copy −ovc lavc −lavcopts vcodec=mpeg4

编码 DVD 标题 #2, 缩放到 512xHHH (保持宽高比):

mencoder dvd://2 −vf scale −zoom −xy 512 −o title2.avi −oac copy −ovc lavc −lavcopts vcodec=mpeg4

同上, 但使用比特率 1800kbit 和优化的 macroblocks:

mencoder dvd://2 −o title2.avi −oac copy −ovc lavc −lavcopts vcodec=mpeg4:mbd=1:vbitrate=1800

同上, 但使用 MJPEG 压缩:

mencoder dvd://2 −o title2.avi −oac copy −ovc lavc −lavcopts vcodec=mjpeg:mbd=1:vbitrate=1800

编码当前目录下的所有 *.jpg 文件:

mencoder "mf://*.jpg" −mf fps=25 −o output.avi −ovc lavc −lavcopts vcodec=mpeg4

从电视调谐器编码 (指定格式用 −vf format):

mencoder −tv driver=v4l:width=640:height=480 tv:// −o tv.avi −ovc raw

从管道编码:

rar p test-SVCD.rar | mencoder −ovc lavc −lavcopts vcodec=mpeg4:vbitrate=800 −ofps 24 −

程序错误


不要惊慌。如果你发现错误, 报告我们, 但请首先确认你已阅读了所有的文档。也要小心那些表情符号 :) 许多错误是不正确的设置和参数使用引起的。错误报告的文档一节 (http://www.mplayerhq.hu/DOCS/HTML/en/bugreports.html) 解释了如何创建有用的错误报告。
程序的作者


MPlayer 最初由 Arpad Gereoffy 制作。其它许多贡献者的部分清单, 请参见 AUTHORS(作者) 文件。

MPlayer 是 (C) 2000−2008 The MPlayer Team (MPlayer 团队) 所有

本(英文)手册页主要由 Gabucino, Jonas Jermann 和 Diego Biurrun 编写, 由 Diego Biurrun 维护。视频滤镜、通用编解码器选项、特定编解码器专用选项三个章节由 JRaSH 重新翻译参于翻译本中文手册页的有: JRaSH, Sheldon Jin , Lu Ran 等。有关本文的联系请发送邮件到 MPlayer-DOCS 邮件列表。与翻译相关的邮件属于 MPlayer-translations 邮件列表。

官网上的mplayer中文说明文档Part.4

通用编码选项(仅用于MENCODER)


−audio−delay


通过在文件头部中设置延迟信息域来延迟音频或视频。(默认值:0.0)。 该选项不在编码过程中延迟音频或视频流,但播放器会读出延迟信息域并做相 应的补偿处理。 正数值延迟音频,而负数值延迟视频。 注意该选项正好与−delay选项相反。 例如,如果一段视频在−delay 0.2下正确播放,那么你可以在MEncoder中使用 −audio−delay −0.2修复视频的不同步问题。

当前,该选项只能用于默认的流合并器(−of avi)。 如果你使用了另外的流合并器,那么你必须使用−delay来代替该选项。


−audio−density <1−50>


每秒钟处理的音频数据块数量(默认值为2,用于0.5s长的音频数据块)。
注意:
只用于CBR,VBR方式忽略该选项,因为它将每个数据包分别放入一个数据块中。


−audio−preload <0.0−2.0>


设置音频缓冲的时音间隔(默认值:0.5s)。


−fafmttag


可用于改写输出文件中的音频格式标签。

示例:


−fafmttag 0x55


将使输出文件包含0x55(mp3)的信息作为音频格式标签。


−ffourcc


可用于改写输出文件中的视频fourcc值。

示例:


−ffourcc div3


将使输出文件包含‘div3’的信息作为视频fourcc值。


−force−avi−aspect <0.2−3.0>


代替存储在AVI OpenDML vprp头部中的宽高比值。 该选项可用于在使用‘−ovc copy’时更改宽高比值。


−frameno−file (不推荐使用)


指定包含有帧序号对应关系表的音频文件的文件名,该对应关系表是在特殊的三阶 段编码模式的第一阶段(只处理音频)中生成的。
注意:
使用该模式很可能会让你得到A-V不同步的结果。 不要使用它。 它只是为了向后兼容而保留的,并且相当可能在以后的版本中去除。


−hr−edl−seek


在跳过处理区域时使用一种更精确但相对很慢的方式。 不是定位标记为需跳过的处理区域,而是解码所有的帧并且只有编码需 要的帧。 该选项使从非关键帧的边界开始编码成为可能。
注意:
不保证能与‘−ovc copy’一同使用。


−info (只用于AVI)


指定生成的AVI文件的头部信息内容。

可用选项有:


help


显示本部分描述。


name=


作品的标题


artist=


作品的作者


genre=


原作的类别


subject=


作品的内容


copyright=


版权信息


srcform=


数字化资料的原始格式


comment=


关于作品的总体性注释


−noautoexpand


不要自动在MEncoder滤镜链中插入扩展滤镜。 适用于将字幕内嵌入影片时控制在滤镜链中的哪一个点上渲染字幕。


−noencodedups


不要尝试将重复的帧重复地编码;必须以输出零字节帧的方式表明有重复帧。 除非加载了能进行重复帧编码的滤镜或编码器,否则无论如何将写入零字节帧。 当前这样的滤镜只有hardup。


−noodml(仅用于−of avi的情况下)


对于大于1GB的AVI文件不写入OpenDML索引。


−noskip


不要跳过任何帧。


−o


输出至所给的文件名。
如果你需要有一个默认的输出文件名,你可以将此选项放在MEncoder的配置文 件中。


−oac


使用所给的音频编解码器编码(没有默认值)。
注意:
使用−oac help来获取可用音频编解码器的列表。

示例:


−oac copy


不编码,直接复制音频流


−oac pcm


编码为未压缩的PCM格式。


−oac mp3lame


编码为MP3格式(使用LAME)。


−oac lavc


使用libavcodec编解码器编码。


−of (BETA测试版代码!)


编码为指定的容器格式(默认值:AVI)。
注意:
使用−of help以获取可用的容器格式的列表。

示例:


−of avi


编码为AVI格式。


−of mpeg


编码为MPEG格式(另参见−mpegopts)。


−of lavf


使用libavformat流合并器编码(另参见−lavfopts)。


−of rawvideo


原始视频流(不合并——只含一个视频流)


−of rawaudio


原始音频流(不合并——只含一个音频流)


−ofps


为输出文件指定一个每秒帧数(fps)值,该值可以与原来视频中的不 同。 必须为可变fps(ASF、一些MOV)以及逐行扫描(30000/1001 fps电视 图像模式的MPEG)文件设置该值。


−ovc


使用给出的视频编解码器编码(没有默认值)。
注意:
使用−ovc help来获取可用视频编解码器的列表。

示例:


−ovc copy


不编码,直接复制视频流


−ovc raw


编码为任意的未压缩格式(使用‘−vf format’选择具体格式)。


−ovc lavc


使用libavcodec编解码器编码。


−passlogfile


在二阶段编码模式中将第一阶段的信息导出至,而不是默认的divx2pass.log。


−skiplimit


指定编码了一帧之后最多可以跳过的帧的数量(−noskiplimit表示无限 制)。


−vobsubout


指定输出的.idx和.sub文件的主文件名。 该选项使字幕不在编码后影片得到渲染,而是将其转而输出至VOBsub的字幕文件。


−vobsuboutid


为字幕指定双字母的语言代码。 该选项改写了从DVD或.ifo文件中读取的语言代码。


−vobsuboutindex


指定输出文件中字幕的索引号(默认值:0)。

特定编解码器专用的编码选项(仅用于MENCODER)


你可以使用以下的句法指定特定编解码器专用的参数:


opts


这里可以是:lavc、xvidenc、lame、toolame、twolame、nuv、xvfw、faac、 x264enc、mpeg、lavf。


lame (−lameopts)


help


获取帮助信息


vbr=<0−4>


可变比特率方式


0


cbr



1


mt



2


rh(默认值)


3


abr


4


mtrh


abr


平均比特率


cbr


恒定比特率 同时强制在后面指定的ABR预设模式中使用CBR模式。


br=<0−1024>


以kbps计量的比特率(仅用于CBR和ABR)


q=<0−9>


质量(0 − 最好,9 − 最差)(仅用于VBR)


aq=<0−9>


算法质量(0 − 最好/最慢,9 − 最差/最快)


ratio=<1−100>


压缩比


vol=<0−10>


音频输入的增益


mode=<0−3>


(默认方式:自动判断)


0


立体声


1


共享式立体声


2


双声道


3


单声道


padding=<0−2>


0


无填充


1


所情况下均填充


2


调整



fast


打开后面所指定的VBR预设模式中的较快编码方式。 这将造成质量稍差而比特率稍高。


highpassfreq=


设置高通过滤的频率值,单位为Hz。 低于所指定值的频率将被滤除。 值−1将禁用过滤,值0将让LAME自动选择一个值。


lowpassfreq=


设置低通过滤的频率值,单位为Hz。 高于所指定值的频率将被滤除。 值−1将禁用过滤,值0将让LAME自动选择一个值。


preset=


预设值


help


打印预设设置的其它选项与信息。


medium


VBR编码,质量不错,比特率范围为150−180 kbps


standard


VBR编码,高质量,比特率范围为170−210 kbps


extreme


VBR编码,超高质量,比特率范围为200−240 kbps


insane


CBR编码,最高的预设质量,比较率为320bps


<8−320>


ABR编码,平均比特率为所给的kbps值


示例:


fast:preset=standard


适用大多数人以大多数音乐类型,质量已经相当高了


cbr:preset=192


使用192kbps的ABR预设模式,强制使用固定比特率编码。


preset=172


使用ABR预设模式、172kbps的平均比特率编码。


preset=extreme


用于那些有极好听力和极好设备的人


toolame和twolame(分别对应−toolameopts和−twolameopts)


br=<32−384>


在CBR模式下该参数指明比特率值,单位为kbps,而在VBR模式下则是每个音频帧所允许的最 小比特率。VBR模式不能在该值低于112时工作。


vbr=<−50−50>(仅用于VBR)


比特率可变范围;如果为负值,则编码器使平均比特率向所限制最低值靠拢,如果为正值, 则向最高值靠拢。 设为0时使用CBR模式(默认值)。


maxvbr=<32−384>(仅用于VBR)


每个音频帧所允许的最大比特率,单位为kbps


mode=


(默认值:单声道音频使用mono,否则为stereo)


psy=<−1−4>


心理声学模型(默认值:2)


errprot=<0>


使用错误保护功能。


debug=<0−10>


调试等级


faac(−faacopts)


br=


平均比特率,单位为kbps(与quality选项不能同时使用)


quality=<1−1000>


质量模式,值越高效果越好(与br选项不能同时使用)


object=<1−4>


目标类型的复杂度


1


MAIN(默认值)


2


LOW



3


SSR


4


LTP(运行极慢)


mpeg=<2|4>


MPEG版本(默认值:4)


tns


启用瞬时噪声整形(TNS)功能。


cutoff=<0−采样频率/2>


截断频率(默认值:采样频率/2)


raw


将比特流保存为原始负载,而额外的数据保存在容器文件的头部中(默认值:0,与ADTS相 一致)。如果没有明确的需要就不要设置这个标志位,否则你以后将不能重新将音频流合并 进容器文件了。


lavc(−lavcopts)


有许多libavcodec(简称lavc)选项只是简要说明。 要了解详情请阅读源代码。

示例:


vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250


acodec=


音频编解码器(默认值:mp2)


ac3


Dolby Digital(AC-3)


adpcm_*


自适应PCM格式——参见HTML文档以获取详细信息。


flac


Free Lossless Audio Codec(FLAC,免费无损音频编解码器)


g726


G.726 ADPCM


libamr_nb


3GPP的自适应多码率(AMR)窄频段格式


libamr_wb


3GPP的自适应多码率(AMR)宽频段格式


libfaac


Advanced Audio Coding(AAC,高级音频编码)——使用FAAC


libmp3lame


MPEG-1音频层次3(MP3)——使用LAME


mp2


MPEG-1音频层次2(MP2)


pcm_*


PCM格式——参见HTML文档以获取详细信息。


roq_dpcm


Id Software的RoQ DPCM


sonic


实验性的简易有损编解码器


sonicls


实验性的简易无损编解码器


vorbis


Vorbis


wmav1


Windows Media Audio v1


wmav2


Windows Media Audio v2


abitrate=


音频比特率,单位为kbps(默认值:224)


atag=


使用所指定的Windows音频格式标签(例如atag=0x55)。


bit_exact


只使用精确到比特的算法(除了(I)DCT)。 此外,精确到比特的方式禁用了许多的优化模式,因而应当只用于回归测试。这种测试要求 即使编码器的版本变了,文件的二进制内容也要相同。 该选项同时禁用MPEG-4流中的用户数据头。 除非你确切知道你要做什么,否则不要使用这个选项。


threads=<1−8>


最大能使用的线程数(默认值:1)。 可能对运动预测有一定负面影响。


vcodec=


使用所指定的编解码器(默认值:mpeg4)。


asv1


ASUS Video v1


asv2


ASUS Video v2


dvvideo


Sony Digital Video


ffv1


FFmpeg的无损视频编解码器


ffvhuff


非标准的使用YV12格式的20%提升的HuffYUV


flv


用在Flash视频中的Sorenson H.263


h261


H.261


h263


H.263


h263p


H.263+


huffyuv


HuffYUV


libtheora


Theora


libx264


x264 H.264/AVC MPEG-4 Part 10


libxvid


Xvid MPEG-4 Part 2(ASP)


ljpeg


Lossless JPEG


mjpeg


Motion JPEG


mpeg1video


MPEG-1 video


mpeg2video


MPEG-2 video


mpeg4


MPEG-4(DivX 4/5)


msmpeg4


DivX 3


msmpeg4v2


微软MPEG4v2


roqvideo


ID Software的RoQ Video


rv10


一个老旧的RealVideo编解码器


snow(另参见:vstrict)


FFmpeg实验性的基于小波变换的编解码器


svq1


Apple Sorenson Video 1


wmv1


Windows Media Video, version 1(也就是WMV7)


wmv2


Windows Media Video, version 2(也就是WMV8)


vqmin=<1−31>


最低量化参数(第1/2阶段编码)


1


不推荐(文件大很多,质量差别不大,而且有奇怪的副作用:msmpeg4、h263的质量会很差, 码率控制会混乱从而质量下升,而且一些解码器将不能解码)。


2


推荐用于普通mpeg4/ mpeg1video编码(默认值)。


3


推荐用于h263(p)/ msmpeg4。 建议采用3而不是2的原因是2可能造成溢出。(这在h263(p)中会在将来通过改变每个宏块的 量化参数而解决,而msmpeg4中无法修复,因为它不支持那种方式。)


lmin=<0.01−255.0>


用于码率控制的最小帧级别的拉格朗日乘子(默认值:2.0)。 Lavc很少会使用低于vqmin值的量化参数。 降低lmin会使lavc更容易在处理某些帧选用更低的量化参数,但不会低于vqmin值。 类似的,提高lmin将使lavc更不可能选用低的量化参数,即使vqmin参数允许使用这些量化 参数。 你很可能想将lmin设为大致与vqmin相等。 当使用自适应量化模式时,改变lmin/lmax可能影响不大;参见mblmin/mblmax。


lmax=<0.01−255.0>


用于码率控制的最大拉格朗日乘子(默认值:31.0)


mblmin=<0.01−255.0>


用于码率控制的最小宏块级别的拉格朗日乘子(默认值:2.0) 该参数影响诸如qprd、lumi_mask等自适应量化选项。


mblmax=<0.01−255.0>


用于码率控制的最大宏块级别的拉格朗日乘子(默认值:31.0)


vqscale=<0−31>


恒定量化参数/ 恒定质量编码(选用固定量化参数模式)。 值越小意味着质量越好,但文件越大(默认值:−1)。 在使用snow编解码器的情况下,值0表示无损编码。 由于其它编解码器不支持这个值,vqscale=0会有未经定义的效果。 不推荐用1(参见vqmin获取详情)。


vqmax=<1−31>


最大量化参数(第1/2阶段编码),10−31应该是一个合理的范围(默认值:31)。


mbqmin=<1−31>


过时参数,应使用vqmin


mbqmax=<1−31>


过时参数,应使用vqmax


vqdiff=<1−31>


连续的I或P帧之间最大的量化参数差别(第1/2阶段编码)(默认值:3)


vmax_b_frames=<0−4>


非B帧之间存在的最大B帧数目:


0


无B帧(默认值)


0−2


对于MPEG-4来说是合理的范围


vme=<0−5>


运动预测方式。 可用方式有:


0


none(质量很低)


1


full(运行慢,当前代码未维护且已禁用)


2


log(质量低,当前代码未维护且已禁用)


3


phods(质量低,当前代码未维护且已禁用)


4


EPZS:size=1的菱形模板,size可以通过*dia选项调整(默认值)


5


X1(实验性选项,当前是EPZS的一个别名)


8


iter(递归重叠的区块,仅用于snow)


注意: 目前0−3无视所花费比特的多少,所以质量可能比较低。


me_range=<0−9999>


运动预测的搜索范围(默认值:0(不限制))


mbd=<0−2>(另参见*cmp、qpel)


宏块决策算法(高质量模式),将每个宏块在所有的模式下编码然后选择最佳的模式。 该模式运行很慢,但能使质量提高,文件大小降低。 当 mbd 设为1或2时,比较宏块过程中将不考虑 mbcmp 的值(但是其它地方还是使用 了 mbcmp 值,特别是运动搜索算法中)。 然而当某个比较设置(precmp、subcmp、cmp 或 mbcmp)为非零值时,将会使用一种更慢但更 好的半像素运动搜索模式,而不管 mbd 设为何值。 如果设置了 qpel 参数,则将肯定使用四分之一像素运动搜索模式。


0


使用mbcmp提供的比较函数(默认方式)。


1


选用需要比特最少的宏块模式(=vhq)。


2


选用码率失真最优的宏块模式。


vhq


与mbd=1相同,出于兼容性考虑而保留了下来。


v4mv


允许每个宏块有4个运动矢量(质量较好些)。 如果在mbd>0时使用效果更好。


obmc


重叠块的运动补偿(H.263+)


loop


遁环过滤(H.263+) 注意,该选项有问题


inter_threshold <−1000−1000>


当前没有任何作用。


keyint=<0−300>


关键帧的最大间隔,单位为帧数(默认值:250或者说25fps的影片中每10秒一个关键帧。这 个数值是MPEG-4中推荐使用的默认值)。 大多数编解码器需要定期使用关键帧以限制不匹配错误聚积过多。 关键帧也在播放定位时需要,因为只能定位于关键帧——但关键帧比其它帧需要更多空间, 所以这里的数值设得越大意味着文件越小,但定位越不精确。 0与1相同,这将使每个帧都成为关键帧。 不推荐大于300的值,因为质量可能很差,这取决于解码器、编码器和运气。 通常MPEG-1/2使用小于等于30的值。


sc_threshold=<−1000000000−1000000000>


用于场景切换侦测的阈值。 当libavcodec侦测到场景切换时,它将插入一个关键帧。你可以通过这个选项指定侦测模式 的敏感度。 −1000000000表示每个帧下都会侦测出一个场景切换,1000000000表示侦测不出任何场景切 换(默认值:0)。


sc_factor=


导致使用较高量化参数的帧更容易引发场景切换的侦测,从而使libavcodec使用一个I帧 (默认值:1)。 1−16是一个合理的范围。 2至6之间的值能提高峰值信噪比(PSNR)(最高大约为0.04dB)并且让I帧在高动态场景中 放置于更合适的位置 高于6的值可能提高一点点PSNR(大约比sc_factor=6多0.01dB),而视觉质量下降却相当可 观。


vb_strategy=<0−2>(只用于第一阶段编码)


选用I/P/B帧的策略:


0


总是使用最多的B帧(默认值)。


1


在高动态场景中避免使用B帧。 参观b_sensitivity选项以调试这一策略。


2


调整使用B帧的个数以使质量最好(运行缓慢)。 你可以要通过调整brd_scale选项以减少该选项对于运行速度的负面作用。


b_sensitivity=<任何大于0的整数>


调整vb_strategy=1时运动侦测的敏感程度从而避免使用B帧(默认值:40)。 敏感程度越低将导致越多的B帧。 使用更多的B帧通常能提升峰值信噪比,但太多的B帧可能导致在高动态场景中质量下降。 除非运动程度极其高,否则b_sensitivity设为低于默认的值是很安全的;10在大多数情况 下是一个理想的值。


brd_scale=<0−10>


减小动态B帧决策中帧的尺寸(默认值:0)。 brd_scale每增加一,帧的宽高将减小一半,这样就使运行速度提升至四倍。 尺寸减小后帧的宽和高都必须是偶数,所以brd_scale=1要求原来的宽高尺寸是四的倍数, brd_scale=2要求原来的宽高尺寸是八的倍数,依次类推。 换句话说,原来帧的宽高尺寸都必须能被2^(brd_scale+1)整除。


bidir_refine=<0−4>


优化用于双向宏块的两个运动矢量,而不是重复使用向前和向后搜索所找到的矢量。 该选项只对B帧有效。


0


禁用(默认值)。


1−4


使用更广泛的搜索模式(值越大运行越慢)。


vpass=<1−3>


启用内置的二阶段(或更多阶段)编码模式,只有当你想使用二阶段(或更多阶段)编码模 式时才指定这个值。


1


第一阶段编码(另参见turbo)


2


第二阶段编码


3


第N阶段编码(N阶段编码模式中第二阶段以及之后各阶段的编码)


以下展示了其如何工作,以及如何使用:
第一阶段编码(vpass=1)输出统计文件。 你可能希望关闭一些大量消耗CPU的选项,就像“turbo”模式所做的那样。
在二阶段编码模式中,第二阶段(vpass=2)读取统计文件的内容并依据该内容作出码率控 制的决策。
在N阶段模式中,第二阶段(vpass=3——这不是本文档的印刷错误)同时做两件事:首先读 取统计信息,然后重写这些信息。如果存在不得不终断MEncoder的可能,那么你可能希望在 做这一步前备份divx2pass.log。 你可以使用所有的编码选项,除非是非常消耗CPU的选项如“qns”。
你可以反复执行与此相同的编码阶段以优化编码。 每个紧接着的编码阶段将使用上一个阶段的统计信息并进一步优化。 最后一个编码阶段可以包含任意大量消耗CPU的编码选项。
如果你想用二阶段编码模式,那么先使用vpass=1,然后再用vpass=2。
如果你想用三阶段或更多阶段的编码模式,那么在第一阶段使用vpass=1,接着用vpass=3, 接着不断用vpass=3直至你对编码结果满意了。


huffyuv:


第一阶段


保存统计信息。


第二阶段


使用基于第一阶段统计信息的最优哈夫曼表编码。


turbo(仅用于二阶段编码)


使用更快的算法并禁用大量占用CPU的选项以使第一阶段编码的运行大幅加快。 该选项可能稍稍降低全局峰值信噪比(大约为0.01dB)并且改变单个帧的类型以及稍稍改变 该帧的峰值信噪比(最多至0.03dB)。


aspect=


在文件内部保存影片的宽高比,就像MPEG文件一样。 比使用缩放功能效果好多了,因为质量不下降。 只有MPlayer能正确播放这些文件,其它播放器会以错误的宽高比显示。 宽高比参数可以以比率或浮点数字的形式给出。


示例:


aspect=16/9或aspect=1.78


autoaspect


与aspect选项相同,但是通过综合考量滤镜链上的各种调整(crop/ expand/scale/等 等)自动计算宽高比。 不会对性能产生负面影响,所以你可以放心地让该选项保持为打开的状态。


vbitrate=


指定比特率(第1/2阶段编码)(默认值:800)。
警告:
1kbit = 1000 bits


4−16000


(单位为kbit)


16001−24000000


(单位为bit)


vratetol=


文件大小控制中允许出入的数量,单位为kbit。 1000−100000是一个合理的范围。 (警告:1kbit = 1000 bits) (默认值:8000)
注意:
vratetol在第二阶段编码中不应设得太大,否则当设置了vrc_(min|max)rate时,可能会产 生问题。


vrc_maxrate=


最大比特率,单位为kbit/ sec(第1/2阶段编码) (默认值:0,无限制)


vrc_minrate=


最小比特率,单位为kbit/ sec(第1/2阶段编码) (默认值:0,无限制)


vrc_buf_size=


缓冲大小,单位为kbit(第1/2阶段编码)。 在MPEG-1/2中该选项同时设置了vbv缓冲的大小,对于VCD请使用327,对于SVCD使用917,而 DVD使用1835。


vrc_buf_aggressivity


当前没有什么作用


vrc_strategy


码率控制方式。 注意当vrc_strategy不设为0时,一些影响码率控制的选项将不起任何作用。


0


使用内置的lavc码率控制方式(默认值)。


1


使用Xvid的码率控制方式(仅供测试用;要求MEncoder编译时加入对Xvid 1.1或更高版本的 支持)。


vb_qfactor=<−31.0−31.0>


B帧和非B帧间的量化参数因数(第1/2阶段编码)(默认值1.25)


vi_qfactor=<−31.0−31.0>


I帧和非I帧间的量化参数因数(第1/2阶段编码)(默认值0.8)


vb_qoffset=<−31.0−31.0>


B帧和非B帧间的量化参数偏移量(第1/2阶段编码)(默认值1.25)


vi_qoffset=<−31.0−31.0>


(第1/2阶段编码)(默认值0.0)
如果v{b|i}_qfactor > 0
I/B帧量化参数 = P帧量化参数 * v{b|i}_qfactor + v{b|i}_qoffset
否则
使用常规的码率控制方式(不限定于下一个P帧的量化参数)而设置 q= −q * v{b|i}_qfactor + v{b|i}_qoffset
提示:
要执行恒定量化参数的编码而对I/P和B帧应用不同的量化参数,你可以使用: lmin= :lmax= :vb_qfactor=


vqblur=<0.0−1.0>(第一阶段编码)


量化参数模糊系数(默认值:0.5),值越大将使量化参数在时间上分布得越平均(变化得 越慢)。


0.0


禁用量化参数模糊功能。


1.0


使量化参数在所有先前出现的帧中平均化。


vqblur=<0.0−99.0>(第二阶段编码)


量化参数高斯模糊(默认值:0.5),值越大将使量化参数在时间上分布得越平均(变化得 越慢)。


vqcomp=<0.0−1.0>


量化参数压缩,vrc_eq选项依赖于该选项(第1/2阶段编码)(默认值:0.5)。 例如,假设使用了默认的码率控制方程式,如果vqcomp=1.0,那么码率控制过程中将分配给 每个帧足够的比特数,以使它们在同一个量化参数下编码。 如果vqcomp=0.0,那么码率控制中将分配给每个帧相同的比特数,也就是严格的CBR模式。 注意: 以上都是极端性的设置,应当从不使用。 在这两个极端值之间的某个值能使感观质量达到最优。


vrc_eq=


主码率控制方程式(第1/2阶段编码)


1


恒定比特率


tex


恒定质量


1+(tex/avgTex-1)*qComp


近似于以前码率控制代码所用的方程式


tex^qComp


式中qcomp为0.5或某个类似设置(默认值)


中置运算符:


+,−,*,/,^


变量:


tex


纹理复杂度


iTex,pTex


内部、非内部纹理复杂度


avgTex


平均纹理复杂度


avgIITex


I帧中的平均内部纹理复杂度


avgPITex


P帧中的平均内部纹理复杂度


avgPPTex


P帧中的平均非内部纹理复杂度


avgBPTex


B帧中的平均非内部纹理复杂度


mv


用于运动矢量的比特数


fCode


以log2对数值计量的最大运动矢量长度


iCount


内部宏块数/宏块数


var


空间复杂度


mcVar


时间复杂度


qComp


命令行输入的qcomp值


isI, isP, isB


若图像类型为I/P/B则为1,否则为0。


Pi,E


参见你最喜欢的数学书。


函数:


max(a,b),min(a,b)


最大值/最小值


gt(a,b)


若a>b则为1,否则为0


lt(a,b)


若a


eq(a,b)


若a==b则为1,否则为0


sin, cos, tan, sinh, cosh, tanh, exp, log, abs


vrc_override=


用户指定的针于影片特定部分(尾声、演职员表……)的质量值(第1/2阶段编码)。 选项有[/, , [/...]]:


quality (2−31)


量化参数


quality (−500−0)


质量修正的百分比程度


vrc_init_cplx=<0−1000>


初始复杂度(第一阶段编码)


vrc_init_occupancy=<0.0−1.0>


初始缓冲占用量,为vrc_buf_size值的一个分数(默认值:0.9)


vqsquish=<0|1>


指定如何使量化参数保持在qmin和qmax之间(第1/2阶段编码)。


0


使用截断方式。


1


使用一种不错的微分函数(默认值)。


vlelim=<−1000−1000>


设置亮度的单一系数消减阈值。 设为负数值则将同时考量直流系数(在以quant=1编码时应当至少设为−4或更低):


0


禁用(默认值)


−4


JVT推荐值


vcelim=<−1000−1000>


设置色度的单一系数消减阈值。 设为负数值则将同时考量直流系数(在以quant=1编码时应当至少设为−4或更低):


0


禁用(默认值)


7


JVT推荐值


vstrict=<−2|−1|0|1>


严格符合编码标准


0


禁用



1

只有当你想让MPEG-4标准解码器读取编码输出结果时才推荐使用


−1


允许使用libavcodec专用的扩展功能(默认值)。


−2


启用实验性的编解码器和功能,这些可能在将来版本的MPlayer中无法播放(用于snow)。


vdpart


数据分隔。 每个视频数据包增加2字节内容,从而改善在不可靠信道上传输时(例如,在因特网上传输 流媒体)的容错能力。 每个视频数据包将编码为3个独立的部分:


1. MVs


运动信息


2. DC coefficients(直流系数)


低分辨率画面


3. AC coefficients(交流系数)


细节


MV和DC最为重要,丢失这两个部分似乎远比丢失AC部分和1. & 2.部分严重得多。 (MV & DC)远比3.部分(AC)小得多,这意味着传输错误更多出现在AC部分而不是MV & DC部 分。 所以,画面在数据分割后将比未分割时看上去更好,因为未分割时传输错误将同等地损坏 AC/DC/ MV三个部分。


vpsize=<0−10000>(另参见vbpart)


视频数据包的大小,用于改善容错能力。


0


禁用(默认值)


100−1000


较好的选择


ss


用于H.263+的分片结构模式


gray


仅灰度的编码(较快)


vfdct=<0−10>


DCT算法


0


自动选用一个良好的算法(默认值)。


1


快速整数式


2


精确整数式


3


MMX



4


mlib



5


AltiVec



6


浮点AAN



idct=<0−99>


IDCT算法
注意:
据我们所知,所有这些IDCT算法均通过IEEE1180测试。


0


自动选用一个良好的算法(默认值)。


1


JPEG标准整数式


2


简单式


3


简单MMX



4


libmpeg2mmx(不精确,不要用于keyint >100模式下的编码)


5


ps2


6


mlib


7


arm


8


AltiVec


9


sh4


10


simplearm


11


H.264


12


VP3


13


IPP


14


xvidmmx


15


CAVS


16


simplearmv5te


17


simplearmv6


lumi_mask=<0.0−1.0>


亮度屏蔽是一种‘心理感官性’的设置,一般认为其所利用的事实是人眼倾向于在画面中很 亮的部分里只注意到较少的细节。 亮度屏蔽模式比中性的模式更大幅度地压缩明亮的区域,所以它能省下不少比特将其用于其 它的帧中,从而提高整体的主观感官质量,但同时可能降低了峰值信噪比。
警告:
小心,值过大可能导致灾难性的后果。
警告:
值设得大可能在某些显示器上看起来效果好,但可能在其它显示器上就显得难看。


0.0


禁用(默认值)


0.0−0.3


合理的范围


dark_mask=<0.0−1.0>


暗度屏蔽是一种‘心理感官性’的设置,一般认为其所利用的事实是人眼倾向于在画面中很 暗的部分里只注意到较少的细节。 暗度屏蔽模式比中性的模式更大幅度地压缩明亮的区域,所以它能省下不少比特将其用于其 它的帧中,从而提高整体的主观感官质量,但同时可能降低了峰值信噪比。
警告:
小心,值过大可能导致灾难性的后果。
警告:
值设得大可能在某些显示器上看起来效果好,但可能在其它显示器/电视/液晶屏上就显得难 看。


0.0


禁用(默认值)


0.0−0.3


合理的范围


tcplx_mask=<0.0−1.0>


时间复杂度屏蔽(默认值:0.0(禁用))。 设想一下一个场景中一只鸟飞过整个场景;tcplx_mask将提高描绘鸟的宏块的量化参数(从 而降低这些宏块的质量),而人眼通常没有时间去看清鸟的所有细节。 注意如果被屏蔽的对象停止运动(例如鸟儿落地了),那么很有可能在短时间内这个对象会 显得很难看,直至编码器注意到这个对象不动了而需要更好的块来描绘。 节省下来的比特将用于视频中的其它部分,只要tcplx_mask经过精心选取,这将提高主观感 官质量。


scplx_mask=<0.0−1.0>


空间复杂度屏蔽 如果没有解块效应滤镜用于解码过程,那么较大的值有助于消除块效应,但这可能不是一个 好办法。
设想一下一个含有草丛(这通常有很大的空间复杂度)、蓝天和一间房子的场景; scplx_mask将提高描绘草丛的宏块的量化参数,从而降低其质量,由此将更多的比特花在天 空和房子上。
提示:
要充分切除所有的影片黑边,因为它们使宏块的质量下降(这同样适用于不用scplx_mask的 情形)。


0.0


禁用(默认值)


0.0−0.5


合理的范围


注意: 这个设置与使用能更大幅度压缩高频信号的自定义量化矩阵不具有相同效果,因为 即使直流信号改变时scplx_mask也不会降低P块的质量。 scplx_mask的效果可能也不如那种方式好。


p_mask=<0.0−1.0>(另参见vi_qfactor)


降低帧间块的质量。 这等价于提高内部块的质量,因为码率控制器仍在整个视频序列上以相同的平均码率分配了 数据资源(默认值:0.0(禁用))。 p_mask=1.0使分配到每个内部块的比特数加倍。


border_mask=<0.0−1.0>


用于MPEG风格编码器的画面边缘处理模式。 画面边缘处理模式提高距离画面帧边缘不到1/5个帧宽度/高度的宏块的量化参数,因为这些 宏块通常对于显示效果较为不重要。


naq


使自适应量化模式正态化(实验性选项)。 当使用自适应量化模式(*_mask)时,平均每个宏块的量化参数大小可能不再与所需要的帧 级别的量化参数相一致。 Naq将尝试调整每个宏块的量化参数以保证平均值为适当的值。


ildct


使用隔行扫描的DCT。


ilme


使用隔行扫描的运动估计模式(与qpel不能同时使用)。


alt


使用另一种扫描表。


top=<−1−1>


−1


自动判断


0


下半扫描场先进入


1


上半扫描场先进入


format=


YV12


默认值


444P


用于ffv1


422P


用于HuffYUV、无损JPEG、dv和ffv1


411P


用于无损JPEG、dv和ffv1


YVU9


用于无损JPEG、ffv1和svq1


BGR32


用于无损JPEG和ffv1


pred


(用于HuffYUV)


0


左预测


1


平面/


梯度预测


2


中位数预测


pred


(用于无损JPEG)


0


左预测


1


上预测


2


左上预测


3


平面/


梯度预测


6


平均数预测


coder


(用于ffv1)


0


vlc编码(Golomb-Rice)


1


算术编码(CABAC)


context


(用于ffv1)


0


小型上下文环境模式


1


大型上下文环境模式


(用于ffvhuff)


0


预先确定的哈夫曼表(内置的或是二阶编码中产生的)


1


自适应哈夫曼表


qpel


使用四分之一像素的运动补偿模式(与ilme不能同时使用)。
提示:
该选项似乎只对高比特率的编码有用。


mbcmp=<0−2000>


设置用于宏块决策的比较函数,只有当 mbd=0 时才有作用。 该选项也用于一些运动搜索函数中,此时不管 mbd 设置如何它都有作用。


0 (SAD)


绝对值差的合,运行快(默认值)


1 (SSE)


误差的平方合


2 (SATD)


Hadamard变换后绝对值差的合


3 (DCT)


DCT变换后绝对值差的合


4 (PSNR)


量化误差的平方合(避免使用,质量差)


5 (BIT)


块中所需的比特的数量


6 (RD)


码率失真最优,运行慢


7 (ZERO)


0


8 (VSAD)


垂直方向绝对值差的合


9 (VSSE)


垂直方向绝对值差的平方合


10 (NSSE)


保留噪声的差值的平方合


11 (W53)


5/3小波,只用于snow中


12 (W97)


9/7小波,只用于snow中


+256


同时使用色度信息,当前无法在B帧中(正确)运行。


ildctcmp=<0−2000>


设置隔行扫描DCT决策中使用的比较函数(参见mbcmp以获取可用比较函数信息)。


precmp=<0−2000>


设置运动估计预处理阶段所使用的比较函数(参见mbcmp以获取可用比较函数信息)(默认 值:0)。


cmp=<0−2000>


设置整像素运动估计中所使用的比较函数(参见mbcmp以获取可用比较函数信息)(默认 值:0)。


subcmp=<0−2000>


设置亚像素运动估计中所使用的比较函数(参见mbcmp以获取可用比较函数信息)(默认 值:0)。


skipcmp=<0−2000>


FIXME:为这个选项写说明文档。


nssew=<0−1000000>


该设置控制NSSE的权重,其中较大的权重将导致较多的噪声。 0 NSSE与SSE是一样的 如果你希望在你编码后的视频中保留一些噪声,而不是在编码时将他们滤除,那么你会发现 这个设置很有用(默认值:8)。


predia=<−99−6>


运动估计预处理阶段中使用菱形的类型和大小


dia=<−99−6>


运动估计中使用的菱形的类型和大小。 运动搜索是一个迭代式的过程。 使用一个较小的菱形并不会限制搜索中只找较小的运动矢量。 而是说在找到最合适的运动矢量前搜索更倾向于停止,尤其是在噪声介入的情形下。 较大的菱形将允许对于最佳运动矢量的搜索更加广泛,从而搜索更加慢但得到的结果质量更 加好。
大型的常规菱形比自适应形状的菱形质量更好。
自适应形状的菱形在速度和质量之间有较好的折中。
注意:
常规菱形和自适应形状菱形在大小概念上的含义是不同的。


−3


大小为3的自适形形状(快速)菱形


−2


大小为2的自适形形状(快速)菱形


−1


非均匀的多重六边形搜索(运行慢)


1


size=1的常规菱形(默认值)=EPZS类型的菱形


0
000
0


2


size=2的常规菱形


0
000
00000
000
0


trell


使用格子因子搜索的量化模式。 该选项将为每个8x8块找到最优的编码方式。 使用格子因子搜索的量化方式就是一种在峰值信噪比对比码率意义下最优的量化模式(假设 IDCT不造成任何数值舍入错误,这种情形显然不在讨论之列。)。 这种量化模式就是找一个具有最小错误数和lambda*bits值的块。


lambda


与量化参数(QP)相关的常数


bits


编码这个块所需的比特数量。


error


量化错误数的平方和


cbp


码率失真最优的编码后块的特征。 将选取使削减值与lambda*rate值的合最小化的编码后块的特征。 该选项只能与格子因子量化模式一起使用。


mv0


尝行在运动矢量=<0,0>的条件下编码每个宏块并选取最好的一个。 当mbd=0时该选项没有作用。


mv0_threshold=<任意非负整数>


当周围的运动矢量为<0,0>,而当前块的运动估计评分小于mv0_threshold时,将使用<0,0> 作为运动矢量,而跳过进一步的运动估计步骤(默认值:256)。 将mv0_threshold降低至0可以使峰值信噪比有稍许(0.01dB)增加,并且可能使编码后的视 频看上去稍微好一些;将mv0_threshold设为高于320时将导致峰值信噪比和视觉质量大大降 减。 较高的值使编码加快一点点(通常低于1%,这取决于所使用的其它选项)。
注意:
该选项不要求启用mv0选项。


qprd(仅用于mbd=2)


对于每个宏块中给定lambda值的码率失真最优的量化参数(QP)


last_pred=<0−99>


来自前一帧的运动预测器的数量


0


(默认值)


a


将使用2a+1 x 2a+1宏块数平方个来自前一帧的运动矢量预测器。


preme=<0−2>


运动估计的预处理阶段


0


禁用



1

只在I帧后使用(默认值)


2


总是使用


subq=<1−8>


亚像素优化质量(用于qpel)(默认值:8(高质量))
注意:
该选项对速度有极大影响。


refs=<1−8>


运动补偿中所考虑的参照帧的数量(仅用于Snow)(默认值:1)


psnr


编码后打印整个视频的PSNR(峰值信噪比),并将每个帧的PSNR存放在一个名字诸如 ‘psnr_hhmmss.log’的文件中。 返回的值单位为dB(分贝),值越高越好。


mpeg_quant


使用MPEG的量化器而不是H.263的。


aic


启用MPEG-4的AC预测模式,或是H.263+的高级帧内预测模式。 该选项将很有限地提升质量(大约0.02dB的PSNR),同时很有限地减慢编码速度(大约为 1%)。
注意:
vqmin应当设为8或更大以使用H.263+ AIC。


aiv


用于H.263+的另一种帧间vlc模式


umv


无限制的运动矢量(MV)(仅用于H.263+) 允许编码任意长的MV。


ibias=<−256−256>


帧内量化器偏向系数(256等价于1.0,MPEG类型的量化器的默认值:96,H.263类型的量化 器的默认值:0)
注意:
H.263 MMX量化器无法处理正值的偏向系数(应设置vfdct=1或2), MPEG MMX量化器无法处理负值的偏向系数(应设置vfdct=1或2)。


pbias=<−256−256>


帧间量化器偏向系数(256等价于1.0,MPEG类型的量化器的默认值:0,H.263类型的量化器 的默认值:−64)
注意:
H.263 MMX量化器无法处理正值的偏向系数(应设置vfdct=1或2), MPEG MMX量化器无法处理负值的偏向系数(应设置vfdct=1或2)。
提示:
偏向系数的值越大(−32 − −16而不是−64)看上去越能提升PSNR。


nr=<0−100000>


噪声削减模式,0表示禁用。 0−600对于典型的视频内容来说是一个有用的范围,但是你可能希望将其调高一点以用于噪 点十分多的视频内容(默认值:0)。 考虑到该选项对于编码速度影响小,你可能想更倾向于使用这个选项,而不是用诸如 denoise3d或hqdn3d之类的视频滤镜来过滤噪声。


qns=<0−3>


量化器噪声整形模式。 该选项不是选择在PSNR上最接近源视频的量化模式,而是选择能使噪声(通常是色斑)会被 图像中相近频率内容所屏蔽的量化模式。 较大的值运行速度较慢,但可能不能产生较好的编码质量。 该选项可以并且应当与格子因子量化模式一起使用,在这种情况下格子因子量化模式(对于 恒定权值是最优的)将作为迭代搜索的起始操作。


0


禁用(默认值)


1


仅降低系数的绝对值。


2


仅改变最后一个非零系数+1之前的系数。


3


尝试所有可能操作。


inter_matrix=<逗号分隔的矩阵>


使用自定义的帧间矩阵。 该选项需要一个用逗号分隔的64个整数组成的字符串。


intra_matrix=


使用自定义的帧内矩阵。 该选项需要一个用逗号分隔的64个整数组成的字符串。


vqmod_amp


实验性的量化器调整模式


vqmod_freq


实验性的量化器调整模式


dc


以比特为单位的帧内DC精度(默认值:8)。 如果你指定了vcodec=mpeg2video,那么这个值可以是8、9、10或11。


cgop(另参见sc_threshold)


关闭所有的GOP。 当前该选项只有当场景切换侦测功能禁用时才能工作(sc_threshold=1000000000)。


(no)lowdelay


设置用于 MPEG-1/2 的低延迟标志(禁用B帧)。


vglobal=<0−3>


控制写入全局视频头部信息的方式。


0


编解码器决在哪里写入全局头部信息(默认值)。


1


只在extradata(额外数据)域中写入全局头部信息(.mp4/MOV/NUT需要这样做)。


2


只在关键帧之前写入全局头部信息。


3


结合1和2两种方式。


aglobal=<0−3>


与vglobal相同,用于音频头部信息。


level=


设置编解码器环境等级。 使用31或41以在Playstation 3上播放视频。


skip_exp=<0−1000000>


FIXME:为这个选项写说明文档。


skip_factor=<0−1000000>


FIXME:为这个选项写说明文档。


skip_threshold=<0−1000000>


FIXME:为这个选项写说明文档。


nuv(−nuvopts)


Nuppel视频基于RTJPEG和LZO。 默认方式下,帧首先以RTJPEG方式编码,然后再用LZO压缩,但可以禁用这两个阶段的一个 或两个。 于是,你可以实际上输出的是原始的i420、LZO压缩的i420、RTJPEG或默认情况下的经LZO压 缩的RTJPEG。
注意:
nuvrec文件包含了一些关于用于大多数常见TV编码的设置的建议和示例。


c=<0−20>


色度阈值(默认值:1)


l=<0−20>


亮度阈值(默认值:1)


lzo


启用LZO压缩(默认值)。


nolzo


禁用LZO压缩。


q=<3−255>


质量等级(默认值:255)


raw


禁用RTJPEG编码。


rtjpeg


启用RTJPEG编码。(默认值)。


xvidenc (−xvidencopts)


有三个模式可以使用:恒定比特率模式(CBR)、固定量化器模式和二阶段编码模式。


pass=<1|2>


在二阶段编码模式中指定哪一个阶段。


turbo(仅用于二阶段编码模式)


通过使用更快的算法并禁用大量消耗CPU的选项,以加速第一阶段编码。 该选项可能稍许降低全局的PSNR,并且改变单个帧的类型,以及稍许提升这个帧的PSNR。


bitrate=(用于CBR或二阶段编码模式)


设置所使用的比特率。若值小于16000,则单位为千比特/ 秒;若值大于16000,则单位 为bits/second。 如果为负数,那么Xvid将把这个值的绝对值作为视频的目标大小(单位为 kBytes),并自动计算出相应的比特率(默认值:687kbits/s)。


fixed_quant=<1−31>


切换至固定量化器模式,并指定所使用的量化器。


zones=[/[/...]](CBR或二阶段编码模式)


用户指定的针对影片特定部分(片尾、演职员表、……)的质量值。 每个zone的格式是,,,其中可以是


q


更改恒定量化器,在这种模式下value=<2.0−31.0>,代表量化参数值。


w


更改码率控制权值,在这种模式下value=<0.01−2.00>,代表单位为%的质量修正值。


示例:


zones=90000,q,20


将90000开始的所有帧以恒定量化参数20编码。


zones=0,w,0.1/10001,w,1.0/90000,q,20


将0−10000帧以10%的比特率编码,将90000直至结尾的帧以20的恒定量化参数编码。 注意需要有第二个zone以限定第一个zone,因为没有它直至89999的所有帧都会以10%的比特 率编码。


me_quality=<0−6>


该选项控制运动估计子系统。 值越高,运动估计就越精确(默认值:6)。 运动估计越精确,就能节省越多的比特。 提高精度是以牺牲CPU时间为代价的,所以如果你需要实时编码,那么就降低这个设置。


(no)qpel


MPEG-4默认在其运动搜索中采用半像素的精度。 标准中提出了一种允许编码器采用四分之一像素精度的模式。 该选项通常导致图像较为锐化。 不幸的是,该选项对于比特率有很大影响,并且有时候这种较高的比特率的占用阻碍其在固 定比特率下给予图像较好质量。 最好在启用和禁用这个选项的情况下测试一下,以看看是否值得激活该选项。


(no)gmc


启用全局运动补偿模式,该模式使Xvid生成特殊的帧(GMC帧),这种帧相当适合带有摇摄 /推近/ 旋转等镜头的画面。 使用该选项是否能节省比特是高度取决于源视频素材。


(no)trellis


格子因子量化模式是一种自适应的量化方式,该方式通过修改量化后的系数,以使这些系数 能被熵编码器更大幅度地压缩,从而节省比特。 其对质量的提升是不错的,如果VHQ对你来说占用了太多CPU,那么这个设置可能是相比VHQ 而言以较少代价节省一些比特(并且提升固定比特率下画面质量)的一种替代方法(默认 值:打开)。


(no)cartoon


如果你编码的帧序列是动画/ 卡通的话,那么就激活这个选项。 这个选项修改Xvid内部的一些阈值,以使Xvid在针对外观平面化的卡通片的帧类型和运动矢 量的决策中有较好判断。


(no)chroma_me


通常的运动估计算法仅使用亮度信息寻找最佳的运动矢量。 然而对于一些视频素材,使用色度平面能有助于找到更好的矢量。 该设置开启在运动估计中对于色度平面的使用(默认值:开启)。


(no)chroma_opt


启用色度优化器的一个预过滤器。 这个预过滤器将对色彩信息做一些额外的特殊处理,以使图形边缘的阶梯性变化效果降至最 低。 这个预过滤器会以牺牲编码速度为代价以提升质量。 这自然会降低PSNR,因为相对于原始画面的数学上的偏移将增大,但是主观感觉上图像的质 量将得到提升。 由于其依据色彩信息而工作,因而在以灰度模式编码时你可能想把这个选项关掉。


(no)hq_ac


对于来自邻近块的内部帧,激活对于AC系数的高质量预测模式(默认值:开启)。


vhq=<0−4>


运动搜索算法基于一种对于通常色彩域的搜索,并且尝试找到一个能将参照帧和编码所得帧 的差别降至最小的运动矢量。 激活该选项时,Xvid将同时利用频率域(DCT)以搜索到一个既将空间上的差别降至最小, 又将块的编码长度降至最短的运动矢量。 从运行最快至运行最慢的设置有:


0


关闭



1

根椐模式决定(帧间/ 帧内宏块)(默认值)


2


限制性搜索


3


中性搜索


4


宽泛性搜索


(no)lumi_mask


自适应的量化模式使宏块的量化器能在每个帧中有所不同。 这是一种‘心理感官性’的设置,一般认为它所利用的事实是人眼倾向于在画面中十分亮的 和十分暗的部分只注意到较少的细节。 相对于中性的区域,该选项对于这些区域压缩幅度更大,这将节省一些比特而将其用在其它 的帧中,从而提升整体的主观视觉质量但可能降低了PSNR。


(no)grayscale


使Xvid丢弃色度平面信息,从而使编码得到的视频只是灰度模式的。 注意该选项并不加快编码速度,而只是在编码的最后阶段阻止写入色度数据。


(no)interlacing


编码隔行扫描视频内容的扫描场。 打开该选项以用于隔行扫描内容。
注意:
如果你要改变视频的尺寸,那么你需要一个能识别隔行扫描内容的缩放器,你可以使用 −vf scale=::1来激活这种缩放器。


min_iquant=<0−31>


最小I帧量化参数(默认值:2)


max_iquant=<0−31>


最大I帧量化参数(默认值:31)


min_pquant=<0−31>


最小P帧量化参数(默认值:2)


max_pquant=<0−31>


最大P帧量化参数(默认值:31)


min_bquant=<0−31>


最小B帧量化参数(默认值:2)


max_bquant=<0−31>


最大B帧量化参数(默认值:31)


min_key_interval=(仅用于二阶段编码模式)


关键帧间的最小间隔(默认值:0)


max_key_interval=


关键帧间的最大间隔(默认值:10*fps)


quant_type=


设置所使用的量化器类型。 对于高码率,你会发现MPEG量化模式保留了更多的细节。 对于低码率,H.263的平滑特性会为了你带来较少的宏噪声。 当使用自定义的量化矩阵时, 必须 使用MPEG量化模式。


quant_intra_matrix=


载入一个自定义的帧内量化矩阵文件。 你可以使用xvid64conf的矩阵编码器以构建这样的文件。


quant_inter_matrix=


载入一个自定义的帧间量化矩阵文件。 你可以使用xvid64conf的矩阵编码器以构建这样的文件。


keyframe_boost=<0−1000>(仅用于二阶段编码模式)


将一些比特从其它帧类型的空间储备中转移至内部帧中,从而提高关键帧的质量。 该数量是增加的百分比量,所以值为10将给你的关键帧带来比通常情况下多10%的比特量 (默认值:0)。


kfthreshold=(仅用于二阶段编码模式)


与kfreduction一同使用。 定义一个最小距离,低于这个距离你就认为两个帧应当视作是连续的,从而根据 kfreduction的设置处理这个情况 (默认值:10)。


kfreduction=<0−100>(仅用于二阶段编码模式)


以上两个设置可用于调整那些你认为过于接近(一个序列中)头个帧的关键帧的大小。 kfthreshold设置了在哪个范围内的关键帧要被削减,而kfreduction决定了这些关键帧被削 减比特率的量。 最后一个I帧将以通常的方式处理 (默认值:30)。


max_bframes=<0−4>


放置于I/P帧间的B帧的最大数量(默认值:2)。


bquant_ratio=<0−1000>


B帧与非B帧间的量化参数比,150=1.50(默认值:150)


bquant_offset=<−1000−1000>


B帧与非B帧间的量化参数差值,100=1.00(默认值:100)


bf_threshold=<−255−255>


该选项让你指定使用B帧的优先级。 这个值越高,B帧就越可能被使用(默认值:0)。 不要忘了B帧通常量化参数比较高,从而过分产生B帧可能导致视觉质量变差。


(no)closed_gop


该选项告诉Xvid封闭每个GOP(Group Of Pictures——由两个I帧分隔出来的画面组),这 使GOP彼此之间相互独立。 这就是意味着GOP的最后一个帧要么是P帧,要么是N帧,而不是B帧。 通常开启这个选项是比较好的(默认值:开启)。


(no)packed


该选项意在解决编码至诸如AVI之类的不能处理乱序帧序列的容器格式时,所发生的帧顺序 问题。 实际应用中,大多数解码器(无论是软件的还是硬件的)都能够自己处理帧的顺序,因而当 此选项开启时可能反而引起混乱,所以你可以放心地让这个选项保留为关闭状态,除非你确 实知道你在做什么。
警告:
该选项会产生非法的比特流,从而不能被DivX/ libavcodec/ Xvid以外的ISO-MPEG-4的解 码器解码。
警告:
该选项同时会在文件中存入一个虚假的DivX版本号,所以某些解码器中有问题的自动侦测系 统可能会搞不清楚。


frame_drop_ratio=<0−100>(仅用于max_bframes=0时)


该设置控制可变帧率视频流的创建。 该设置的值指定了一个阈值,如果后一个帧相对于前一个帧的差别低于或等于这个阈值,那 么将跳过对于一个帧的编码(一个所谓的n-vop将放置于视频流中)。 在播放时,当遇到一个n-vop时,将显示前一个帧。
警告:
滥用这个设置可能导致视频跳跃,所以使用该选项后果自负!


rc_reaction_delay_factor=


该参数控制CBR码率控制在对于比特率变后作出反应并且对其作出补偿,以使比特率在一个 平均化范围内的帧中保持恒定前,所等待的帧的数量。


rc_averaging_period=


真正的CBR是很难达到的。 由于视频素材的不同,比特率可能是变化而难以预测的。 所以Xvid采用了一种平均化周期,在这个周期中它保证比特数量为给定的一个值(减去一个 较小的可变值)。 这个设置所表达的是Xvid使“多少数量的帧”的比特率平均化从而达到CBR。


rc_buffer=


码率控制缓冲的大小


curve_compression_high=<0−100>


该设置让Xvid从高比特率的场景中拿出一定百分比的比特,而将这些比特还给比特预留储备 中。 你也可以使用这个设置,如果你的一个视频有太多的比特分配给了高比特率的场景,以致于 (较)低比特率的场景变得看上去很糟糕(默认值:0)。


curve_compression_low=<0−100>


该设置让Xvid将一定百分比的额外的比特分给低比特率的场景,而从整个视频剪辑中拿去一 部分比特。 如果你的一些低比特率场景仍然有马赛克,那么这个设置可能很好用(默认值:0)。


overflow_control_strength=<0−100>


在二阶段编码模式的第一阶段,计算出了一个经过缩放的比特率曲线。 这个所期望曲线与编码中得到的曲线之间的差值称为溢出。 显然,二阶段编码的码率控制器尝试弥补这个溢出量,将这个差值派分到后续帧中。 该设置控制了每次有一个新帧时,有多少溢出量分配至其上。 较低的值允许使用较迟缓的溢出控制,较大的码率喷发将较慢地得到补偿(可能导致小型视 频剪辑中缺乏精度)。 较大的值将使比特再分配过程中的变化更具突发性,如果你设得太高则可能太突然,以致产 生损伤(默认值:5)。
注意:
该设置对于质量极具影响,小心使用!


max_overflow_improvement=<0−100>


在帧所用比特的分配过程中,溢出控制可能增加帧的大小。 该参数溢出控制所允许相对理想分配曲线所增加帧大小的最大的百分比 (默认值:5)。


max_overflow_degradation=<0−100>


在帧所用比特的分配过程中,溢出控制可能减少帧的大小。 该参数溢出控制所允许相对理想分配曲线所减小帧大小的最大的百分比 (默认值:5)。


container_frame_overhead=<0...>


指定每帧的平均开销,单位为字节。 大多数时候用户表达的是他们针对视频的目标比特率,而不关心视频容器文件的开销。 这种较小的但(往往)恒定的开销可以导致目标文件大小超过预期值。 Xvid让用户设置容器产生的平均每帧的开销数量(只给出每帧的平均值)。 0具有特殊的含义,这个值让Xvid采用自己的默认值(默认值:24——AVI的平均开销)。


profile=


根据简单配置集(Simple Profile)、高级简单配置集(Advanced Simple Profile)以及 DivX配置集(DivX Profile)限制选项的使用和VBV(短时间内的峰值比特率)。 所产生的视频应该能够在符合这些配置集标准的独立播放器上播放。


unrestricted


没有限制(默认值)


sp0


第0级的简单配置集


sp1


第1级的简单配置集


sp2


第2级的简单配置集


sp3


第3级的简单配置集


asp0


第0级的高级简单配置集


asp1


第1级的高级简单配置集


asp2


第2级的高级简单配置集


asp3


第3级的高级简单配置集


asp4


第4级的高级简单配置集


asp5


第5级的高级简单配置集


dxnhandheld


DXN手持式设备配置集


dxnportntsc


DXN便携NTSC制式设备配置集


dxnportpal


DXN便携PAL制式设备配置集


dxnhtntsc


DXN家庭影院NTSC制式设备配置集


dxnhtpal


DXN家庭影院PAL制式设备配置集


dxnhdtv


DXN高清电视设备配置集


注意: 这些配置集应当与适当的−ffourcc选项一起使用。 通常DX50是可以采用的,因为某些播放器不能识别Xvid但大多数能识别DivX。


par=


指定像素宽高比(Pixel Aspect Ratio)模式(不要与DAR——屏幕宽高比——混淆在一起 )。 PAR是单个像素的宽度和高度的比例。 所以两者的关系如下:DAR = PAR * (宽度/高度)。
MPEG-4定义了5种像素宽高比以及一种泛用宽高比,这为指定一种专用的像素宽高比 留下了余地。 可以指定5种标准模式:


vga11


这是通常用于PC视频内容的PAR。 像素是正方形单元。


pal43


PAL标准的4:3的PAR。 像素是长方形的。


pal169


与前面同理


ntsc43


与前面同理


ntsc169


与前面同理(不要忘了给出精确的比率)


ext


允许你使用par_width和par_height指定你自己的像素宽高比。


注意: 通常,设置aspect和autoaspect选项就已经足够了。


par_width=<1−255>(仅用于par=ext时)


指定自定像素宽高比的宽度。


par_height=<1−255>(仅用于par=ext时)


指定自定像素宽高比的高度。


aspect=


将影片的宽高比存放于文件内部,就像MPEG文件一样。 与重新缩放的效果好很多,因为质量并不下降。 MPlayer与其它一些播放器能正确播放这些文件,除此之外的播放器会以错误的宽高比显示 这些文件。 宽高比参数可以以比率或是浮点数的形式给出。


(no)autoaspect


与aspect选项相同,但是是自动计算宽高比,在此过程中考虑了滤镜链中所进行的所有的调 整(crop/expand/scale/ 等等)。


psnr


编码之后打印出整个视频的PSNR(峰值信噪比),并将逐帧计算的PSNR保存在当前目录中名 字诸如‘psnr_hhmmss.log’的一个文件里。 返回值的单位是dB(分贝),值越高越好。


debug


将逐帧计算的统计信息保存在./xvid.dbg中。(这个文件不是二阶段编码模式中的码率控制 文件。)


以下选项只存在于Xvid 1.1.x中。


bvhq=<0|1>


该设置允许通过使用一种针对码率失真优化的运算,来选取用于编码中使用的B帧的候 选运动矢量,对于P帧这种方式是通过vhq选项实现的。 该方式产生的B帧看上去较好,而同时也几乎不影响性能(默认值:1)。


以下选项只存在于1.2.x版的Xvid中。


threads=<0−n>


创建n个线程用以运行运动估计任务(默认值:0)。 最多可以使用的线程的数量为画面的高度除以16所得的值。


x264enc(−x264encopts)


bitrate=


设置所采用的平均比特率,单位为千比特/ 秒(默认值:关闭)。 由于局部比特率会变化,因而这个平均值对于十分短的视频来说可以不精确 (参见ratetol)。 可以通过将此设置与vbv_maxrate一起使用来实现恒定的比特率,代价是质量严重下降。


qp=<0−51>


该选项选择的是用于P帧的量化器。 I与B帧的话分别是该值加上ip_factor与pb_factor后得到的值。 20−40是一个有用的范围。 较低的值产生较好的精确,但导致比特率较高。 0代表无损。 注意H.264的量化模式与MPEG-1/2/4的工作方式不同: H.264的量化参数是基于对数尺度的。 两者之间的映射关系大至是H264QP = 12 + 6*log2(MPEGQP)。 例如,MPEG的QP=2与H.264的QP=18是等价的。


crf=<1.0−50.0>


启用恒定质量模式,并选择质量值。 该质量值的尺度与QP的相类似。 就像基于比特率的模式一样,该模式允许每个帧根据帧的复杂度使用不同的QP。


pass=<1−3>


启用2或3阶段编码模式。 推荐总是以2或3阶段编码模式编码,因为该模式使比特的分配更佳,从而提升整体质量。


1


第一阶段


2


(二阶段编码模式中的)第二阶段


3


第N阶段(三阶段编码模式的第二和第三阶段)


以下介绍的是其如何工作,以及使用这个参数:
第一阶段(pass=1)收集视频上的统计信息,并将这些信息写入一个文件中。 除了那些默认为打开的选项,你可能想关闭一些消耗CPU的选项。
在二阶段编码模式,第二阶段(pass=2)读取统计信息文件,并基于这个文件进行码率控制 决策。
在三阶段编码模式中,第二阶段(pass=3——这是不打印错误)同时做两件事:其首先读取 统计信息,然后重写这些统计信息。 你可以使用所有的编码选项,除了那些十分消耗CPU的选项。
第三阶段(pass=3)与第二阶段相同,只是这一阶段基于第二阶段产生的统计信息工作。 你可以使用所有的编码选项,包括消耗CPU的那些选项。
第一阶段可以使用平均比特率模式,或是使用恒定量化器模式。 推荐使用ABR,因为该模式不需求猜测所要使用的量化器。 后续的阶段是ABR模式的,并且必须指定比特率。


turbo=<0−2>


快速第一阶段模式。 在二阶段或更多阶段编码的第一阶段中,可以通过禁用一些对于最终阶段输出质量影响甚 小,甚至没有影响的选项,以提升运行速度。


0


禁用(默认值)


1


减小subq、frameref的值,并且禁用一些宏块间划分分析的模式。


2


减小subq、frameref至1,使用菱形运动估计搜索,并且禁用所有划分分析模式。


第1级可以最多使第一阶段的速度加快至2倍,而与完全质量的第一阶段模式相比,对于最 终阶段的全局PSNR没有任何改变。
第2级可以最多使第一阶段的速度加快至4倍,而与完全质量的第一阶段模式相比,对于最 终阶段的全局PSNR有大约+/− 0.05dB的改变。


keyint=


设置IDR帧间的最大间隔(默认值:250)。 较大的值节省比特,从而提高质量,代价是降低播放中的定位精度。 与MPEG-1/2/4不同,H.264在keyint值很大是并不受DCT漂移效应影响。


keyint_min=<1−keyint/2>


设置IDR帧间的最小间隔(默认值:25)。 如果这个间隔中出现了场景切换,那么这个切换仍然编码为I帧,但不产生新的GOP。 在H.264中,I帧并不一定约束出一个封闭的GOP,因为这里允许P帧在其前面的一帧之前预测 出来(另参见frameref)。 所以,I帧并不一定可用于播放定位。 IDR帧限制其后续P帧,不让它们参照该IDR帧之前的帧。


scenecut=<−1−100>


控制插入额外I帧行为的激进程度(默认值:40)。 当scenecut值小时,编解码器在即将超过keyint所规定值时总是强制使用I帧。 scenectu值设置得好可能为I帧找到一个更好的位置。 较大的数值导致使用多于所需要的I帧,从而浪费了比特。 −1表示禁用场景切换侦测,这样I帧只有每过keyint个帧时才会插入一个,即使场景切换之 前就已发生。 这种方式不推荐使用,并且其浪费比特率,因为场景切换编码为P帧与编码为I帧几乎差不多 大,但其并不重置‘keyint计数器’。


frameref=<1−16>


B帧和P帧中的预测器里所使用的之前出现的帧的数量(默认值:1)。 该选项在动画是有效果的,但在实况视频素材中,大约6个参照帧之后参照帧的优化效果急 剧下降。 该选项对于解码速度没有影响,但确实增加了解码所需的内存量。 某些解码器最多只能处理15个参照帧。


bframes=<0−16>


I帧和P帧之间连续出现的B帧的最大数量(默认值:0)


(no)b_adapt


自动决定何时使用B帧以及使用多少,数量上限为以上所指定的最大值(默认值:开启)。 如果禁用了这个该项,那么将使用的B帧数为最大值。


b_bias=<−100−100>


控制b_adapt所做的决策。 b_bias值最高产生的B帧越多(默认值:0)。


(no)b_pyramid


允许B帧作用预测其它帧的参照帧。 例如,考虑3个连续的B帧:IO B1 B2 B3 P4。 不用这个选项的话,B帧的样式与MPEG-[124]中的一样。 这样这些帧将以IO P4 B1 B2 B3的次序编码,而所有的B帧都是从IO和P4中预测出来的。 使用了这个选项后,这些帧将编码为IO 04 B2 B1 B3。 B2与前面所述的一样,但B1是从IO和B2预测出来的,而B3是从B2和P4预测出来的。 这种方式通常产生稍许好一些的压缩效果,而几乎没有运行速度上的开销。 然而,这是一个实验性的选项:没有完全调整好并且可能不能总是起作用。 要求bframes >= 2。 缺点:将解码延迟量增加至2帧。


(no)deblock


使用反块效应滤镜(默认值:开启)。 由于相对于其提高的质量而言,该选项占用极少时间,所以不推荐禁用这个选项。


deblock=<−6−6>,<−6−6>


第一个参数是AlphaC0(默认值:0)。 该参数调整的是H.264内循环反块效应滤镜所用的阈值。 第一,该参数调整的是滤镜对于任何一个像素所允许产生的变动的最大数量。 第二,该参数影响的是将被滤除的边界两侧差别的阈值。 正数值使更多的块效应损伤得到削减,但同时也会损伤画面细节。
第二个参数是Beta(默认值:0)。 该参数影响的是画面细节的阈值。 细节很多的块将不被过滤,因为滤镜产生的平滑效果会比原来的块效应效果更加明显。
滤镜的默认行为几乎总是带来最优的质量,所以最好要么不调这个选项,要么只对其作少量 调整。 然而,如果你的源视频素材已经有一些块效应或噪声效果你想要去除,那么可能将这个选项 调高一点是个不错的办法。


(no)cabac


使用CABAC模式(Context-Adaptive Binary Arithmetic Coding,上下文自适应的二进制算 术编码)(默认值:开启)。 稍稍减慢编码和解码的速度,但应该可以节省10−15%的比特率。 除非你要解码速度,否则你不该禁用这个选项。


qp_min=<1−51>(用于ABR或二阶段编码模式)


最小量化参数,10−30似乎是一个有用的范围(默认值:10)。


qp_max=<1−51>(用于ABR或二阶段编码模式)


最大量化参数(默认值:51)


qp_step=<1−50>(用于ABR或二阶段编码模式)


量化参数在帧之间增加/降低的最大数值(默认值:4)


ratetol=<0.1−100.0>(用于ABR或二阶段编码模式)


相对于平均比特率的所允许的变化程度(不针对特定编码单元)(默认值:1.0)


vbv_maxrate=(用于ABR或二阶段编码模式)


局部最大的比特率,单位为千比特/ 秒(默认值:禁用)


vbv_bufsize=(用于ABR或二阶段编码模式)


计算vbv_maxrate时所使用的平均化周期,单位为千比特 (默认值:无,如果启用了vbv_maxrate那么必须指定这个选项)


vbv_init=<0.0−1.0>(用于ABR或二阶段编码模式)


初始缓冲占用量,为相对于vbv_bufsize值的一个分数(默认值:0.9)


ip_factor=


I帧和P帧间的量化参数因数(默认值:1.4)


pb_factor=


P帧和B帧间的量化参数因数(默认值:1.3)


qcomp=<0−1>(用于ABR或二阶段编码模式)


量化器压缩率(默认值:0.6)。 值越小使比特率越恒定, 而值越大使量化参数越恒定。


cplx_blur=<0−999>(仅用于二阶段编码模式)


估计出的帧复杂度的时间模糊度,应用于曲线压缩之前(默认值:20)。 值越低则让量化参数值浮动得越多, 值越高则使其变化得越平滑。 cplx_blur保证每个I帧的质量与其后的P帧相当,并保证复杂度高低交替变化的帧(例如, 低帧率的动画)不会因为量化参数的波动而浪费比特。


qblur=<0−99>(仅用于二阶段编码模式)


量化参数的时间模糊度,应用于曲线压缩之后(默认值:0.5)。 值越低则允许量化参数浮动得越多, 值越高则使其变化得越平滑。


zones=[/[/...]]


用户指定的用于影片特定部分(片尾、演职员表、……)的质量值。 每个zone的格式是,,,其中option可能是


q=<0−51>


量化参数


b=<0.01−100.0>


比特率的倍数


注意: 量化参数选项不是严重执行的。 其影响的只是码率控制过程中的计划阶段,并且仍然受制于溢出补偿和qp_min/qp_max选项。


direct_pred=


决定用于B帧中直接模式宏块的运动预测的类型。


none


不使用直接模式的宏块。


spatial


运动矢量由邻接块推断出来。(默认值)


temporal


运动矢量由其后的P帧推断出来。


auto


编解码器为每个帧分别选择是用spatial还是用temporal。


spatial和temporal速度上和PSNR上大致相同,选择两者中的哪一个取决于视频的内容。 auto稍稍好一些,但运行慢一些。 当与多阶段编码模式一同使用时,auto非常有效。 direct_pred=none不仅运行速度较慢而且质量也较差。


(no)weight_b


使用B帧中带权重的预测模式。 不用这个选项的话,双向预测出的宏块给每个所参照的帧相等的权重值。 使用了这个选项后,权重值是根据B帧相对参照帧的时间位置而决定的。 要求bframes > 1。


partitions=


启用一些可选的宏块类型(默认值:p8x8,b8x8,i8x8,i4x4)。


p8x8


启用p16x8、p8x16、p8x8类型。


p4x4


启用p8x4、p4x8、p4x4类型。 p4x4只在subq >= 5,并且分辨率低时才推荐使用。


b8x8


启用b16x8、b8x16、b8x8类型。


i8x8


启用i8x8类型。 除非启用了8x8dct,否则i8x8没有任何效果。


i4x4


启用i4x4类型。


all


启用以上所有类型。


none


禁用以上所有类型。


不管这个选项设为何值,p16x16、b16x16和i16x16三种宏块类型总是启用的。
其思想是找到最适合描绘画面某一区域的宏块类型和尺寸。 例如,全局摇摄镜头较好以16x16的块来表示,而小型移动物体较好以小一点的块来表示。


(no)8x8dct


自适应空间变换尺寸:允许宏块在4x4和8x8的DCT间选择一种。 同时允许使用i8x8的宏块类型。 不使用这个选项,则只使用4x4的DCT。


me=


选择全像素运动估计算法。


dia


菱形搜索,半径为1(运行快)


hex


六边形搜索,半径为2(默认值)


umh


非均匀的多六边形搜索(运行慢)


esa


彻底性搜索(运行非常慢,而且不比umh好多少)


me_range=<4−64>


彻底性运动搜索或多六边形运动搜索的半径(默认值:16)


subq=<1−7>


调整亚像素优化质量。 该参数控制的是运动估计决策过程中质量与速度的权衡。 subq=5能比subq=1多压缩掉10%。


1


对于所有候选宏块类型运行全像素精度的运动估计操作。 然后选择最佳的类型。 然后优化这种类型的运动值,使其达到快速四分之一像素模式的精度(运行最快)。


2


对于所有候选宏块类型运行半像素精度的运动估计操作。 然后选择最佳的类型。 然后优化这种类型的运动值,使其达到快速四分之一像素模式的精度。


3


与2相似,但采用较慢的四分之一像素优化模式。


4


对于所有候选宏块类型运行快速四分之一像素精度的运动估计操作。 然后选择最佳的类型。 然后完成对于此种类型的四分之像素模式的优化操作。


5


在选择最佳类型之前,对于所有候选宏块类型运行最佳质量的四分之一像素精度的运动估计 操作(默认值)。


6


启用I帧和P帧中宏块类型的码率失真优化模式。


7


启用运动矢量和帧内模式的码率失真优化模式。(最佳)


以上内容中,“所有的候选宏块类型”并不恰恰意味着所有已启用的类型: 4x4、4x8、8x4只有当8x8比16x16好时才尝试采用。


(no)chroma_me


在亚像素运动搜索中考虑色度信息(默认值:启用)。 要求subq>=5。


(no)mixed_refs


允许每个8x8或16x8的运动部分独立地选取一个参照帧。 不用这个选项的话,整个宏块必须采用同一个参照帧。 要求frameref>1。


(no)brdo


启用B帧中宏块类型的码率失真优化。 要求subq>=6。


(no)bime


优化双向宏块中所用的两个运动矢量,而不是重复使用向前和向后搜索中得到的矢量。 没有B帧时这个选项没有任何作用。


trellis=<0−2>


码率失真最优的量化模式


0


禁用(默认值)


1


仅对最终编码启用


2


启用所有模式下的决策(运行慢,要求subq>=6)


deadzone_inter=<0−32>


设置非格子因子量化模式中帧间亮度量化无效区的大小(默认值:21)。 较小的值有助于保留最好的细节和影片的粒度感(特别是对于高比特率/质量编码有用), 而较大的值有助于滤除这些细节从而省下比特以用在其它宏块和帧上(特别是对于低比特率 的编码有用)。 推荐你在更改这个参数先调试一下deadzone_intra。


deadzone_intra=<0−32>


置非格子因子量化模式中帧内亮度量化无效区的大小(默认值:11)。 该选项与deadzon_inter有相同的效果,不同在于其影响的是内部帧。 推荐你在更改deadzone_inter之前先调试一下这个参数。


(no)fast_pskip


执行P帧中的早期跳跃侦测功能(默认值:启用)。 该选项通常不花任何代价而提升编码速度,但其有时可能在缺乏细节的画面区域,如天空, 产生画面损伤。


(no)dct_decimate


去除只含有单个微小系数的P帧中的DCT块(默认值:启用)。 该选项会去除一切画面细节,所以其会省下一些比特以用在其它帧上,从而有可能提升整体 的主观质量。 如果你正以较高的目标比特率压缩非动画视频内容,那么你可能希望禁用这个选项以尽可能 保留画面细节。


nr=<0−100000>


噪声削减强度,0表示禁用。 100−1000对于典型内容来说是一个有用的范围,但你可能希望对噪声很强的视频内容调高 一些这个选项。 考虑到这个选项对于运行速度影响小,你可能希望倾向于使用这个选项,而不是使用诸如 denoise3d或hqdn3d之类的视频滤镜来滤除噪声。


chroma_qp_offset=<−12−12>


相对于亮度来说为色度使用一个不同的量化参数。 有用值的范围是<−2−2>(默认值:0)。


cqm=>


要么使用一个预先定义好的自定义量化矩阵,要么加一个JM格式的矩阵文件。


flat


使用预先定义好的平坦16矩阵(默认值)。


jvt


使用预先定义好的JVT矩阵。




使用所给出的JM格式矩阵文件。


注意: Windows CMD.EXE的用户如果尝试使用全部CQM列表时,可能在解析命令行时遇到问题。 这是因为命令行长度有限制。 在这种情况下推荐将列表存在一个JM格式的CQM文件中,然后像上面所说那样加载进来。


cqm4iy=(另参见cqm)


自定义的4x4帧内亮度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。


cqm4ic=(另参见cqm)


自定义的4x4帧内色度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。


cqm4py=(另参见cqm)


自定义的4x4帧间亮度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。


cqm4pc=(另参见cqm)


自定义的4x4帧间色度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。


cqm8iy=(另参见cqm)


自定义的8x8帧内亮度矩阵,以由64个逗号分隔值域为1−255的值组成的列表的形式给出。


cqm8py=(另参见cqm)


自定义的8x8帧间亮度矩阵,以由64个逗号分隔值域为1−255的值组成的列表的形式给出。


level_idc=<10−51>


将比特率的等级设置为H.264标准附件A中定义的值(默认值:51——5.1级)。 该选项用于告诉解码器其需要支持怎么样的性能。 只有当你知道这个参数是什么意思,并且需要设置它时,才使用这个参数。


threads=<0−16>


生成线程以在多个CPU上平行编码(默认值:1)。 该选项对于压缩质量稍有一些影响。 0或‘auto’告诉x264让其侦测你有多个CPU,并选取一个适当的线程数。


(no)global_header


使SPS和PPS只出现一次,即在比特流的开始部分(默认值:禁用)。 某些播放器,诸如Sony PSP,需要使用这个选项。 默认的行为是使SPS和PPS在每个IDR帧前重复出现。


(no)interlaced


将视频内容作为隔行扫描内容对待。


log=<−1−3>


调整打印在屏幕上的日志信息的量。


−1




0

只打印错误信息。


1


警告信息


2


当编码结束时打印PSNR以及其它分析统计信息(默认值)


3


每个帧的PSNR、QP、帧类型、大小,以及其它统计信息


(no)psnr


打印信噪比统计信息。
注意:
PSNR的‘Y’、‘U’、‘V’和‘Avg’域在数学上并不完美(这些值只是逐帧PSNR的平均值 )。 这些只是为了与JM标准的编解码器相比较,而保留下来的。 出于其它目的的话,请采用log=3打印的‘Global’PSNR,或是逐帧的PSNR。


(no)ssim


打印结构相似度计量结果。 该值为PSNR的一种替代计量值,并且可能与压缩后视频上观察到的质量有更好的相关性。


(no)visualize


启用x264在编码时的可视化效果。 如果你系统上的x264支持这个选项,那么在编码过程中将打开一个新窗口,在这个窗口中, x264会尝试总体性地显示出每一帧是如何编码。 在可视化模式下影片的每种块类型将以如下方式着色:


红/粉红


帧内块



帧间块


绿


跳跃



B块


该功能可以认为是实验性,并且容易变化。 特别是,其需要x264编译时启用可视化功能。 注意在写这部分内容时,x264在编码并可视化显示每一帧后会暂停,等待用户按一个键, 在此之后才编码下一帧。


xvfw(−xvfwopts)


使用Windows视频编解码器编码基本上是过时的做法,除非你希望编码为某种难懂而极端的 编解码器格式。


codec=


用于编码的二进制编解码器文件的文件名。


compdata=


vfw2menc创建的编解码器设置文件的文件名(如firstpass.mcf)。


MPEG muxer(−mpegopts)


MPEG muxer可以生成5种类型的视频流,每种都有较好的默认参数,而用户可以更改这些参 数。 通常,当生成MPEG文件时,建议禁用MEncoder的跳帧指令(参见−noskip、−mc以及视频滤 镜harddup和softskip)。

示例:


format=mpeg2:tsaf:vbitrate=8000


format=


视频流格式(默认值:mpeg2)。 pes1与pes2是非常有问题的格式(没有打包头,没有填充),但VDR使用这些格式;不要选 用这些格式,除非你确切知道你在做什么。


size=<最大65535>


单位为字节的打包大小,不要更改这个值除非你确切知道你在做什么(默认值:2048)。


muxrate=


打包头部信息中的单位kbit/s的标称复合流速率(默认值:1800 kb/s)。 当‘format=mpeg1’或‘mpeg2’时将根据需要获得更新。


tsaf


如果可能,在所有帧上设置时间戳值;推荐当format=dvd时使用。 如果dvdauthor报警输出信息,例如“..audio sector out of range...”时,那么你可能 不该启用这个选项。


interleaving2


使用一种更好的算法来交织音频和视频数据包,其所基于的原则是流合并器将总是尝试在空 闲空间所占百分比最大的条件下填充流。


vdelay=<1−32760>


初始视频延迟时间,单位为毫秒(默认值:0), 如果你想让视频相对音频有一定延后,那么就使用这个选项。 这个选项在使用了:drop时无效。


adelay=<1−32760>


初始音频延迟时间,单位为毫秒(默认值:0), 如果你想让音频相对视频有一定延后,那么就使用这个选项。


drop


当与vdelay一起使用时,流合并器将丢弃先于视频出现的那部分音频。


vwidth, vheight=<1−4095>


当视频是MPEG-1/2时,设置视频的宽度和高度。


vpswidth, vpsheight=<1−4095>


当视频是MPEG-2时,设置全景显示模式(pan-scan)下视频的宽度和高度。


vaspect=<1>


设置MPEG-2视频的显示宽高比。 不要对MPEG-1视频使用这个选项,否则产生的宽高比将完全错误。


vbitrate=


设置MPEG-1/2视频单位为kbit/s的视频比特率。


vframerate=<24000/1001>


设置MPEG-1/2视频的帧率。 如果与telecine选项一同使用,那么将忽略这个选项。


telecine


启用3:2下拉软性电视图像化模式:流合并器将使视频流看上去像是以30000/1001fps编码 的。 只有当输出帧率为24000/1001fps时这个选项才对MPEG-2有效,如需要则使用−ofps改变输 出帧率。 其它的帧率与该选项不兼容。


film2pal


启用FILM和NTSC至PAL软性电视图像化模式:流合并器将使视频流看上去像是以25fps编码 的。 只有当输出帧率为24000/1001fps时这个选项才对MPEG-2有效,如需要则使用−ofps改变输 出帧率。 其它的帧率与该选项不兼容。


tele_src and tele_dest


使用Donand Graft的DGPulldown代码启用任意电视图像化模式。 你需要指定原始帧率和所期望的帧率;流合并器将使视频流看上去像是以所期望的帧率编码 的。 只有当输入的帧率比输出的帧率小,并且帧率的增加量 <= 1.5时,这个选项才对MPEG-2视 频有效。


示例:


tele_src=25,tele_dest=30000/1001


PAL至NTSC的电视图像化处理


vbuf_size=<40−1194>


设置视频解码器的缓冲大小,以千字节为单位表示。 只有当视频流的比特率对于所选的格式来说太高了,并且你完全了解你在做什么时,才指定 这个选项。 太高的值可能导致影片无法播放,这取决于播放器的能力。 当合并HDTV视频流时,400的值应该足够了。


abuf_size=<4−64>


设置音频解码器的缓冲大小,以千字节为单位表示。 针对vbuf_size的原则在此同样适用。


FFmpeg libavformat demuxers(−lavfdopts)


analyzeduration=


单位为秒的分析媒体流属性时的最大长度。


format=


强制使用一个特定的 libav 格式库的分离器。


probesize=


在侦测阶段所探测的最大数据量。 在MPEG-TS的情况下,这个值指定了所扫描TS包的最大个数。


cryptokey=


分离器要使用的加密密钥。 该值是密钥的原始二进制数据转换后得到十六进制字符串。


FFmpeg libavformat muxers(−lavfopts)(另参见−of lavf)


delay=


当前只对MPEG[12]有意义:单位为秒的,对于任意出现的流,输出流参照计时器(SCR)和 解码时间戳(DTS)之间的最大所允许的差距。 默认值为0.7(与MPEG标准所定义的强制执行值相同)。 较高的值要求较大的缓冲,因而不应使用。


format=


重新定义所合并输出的是哪种容器格式 (默认值:根据输出文件的扩展名自动侦测)。


mpg


MPEG-1系统以及MPEG-2 PS


asf


高级流媒体格式


avi


音视频交织文件


wav


波形音频


swf


Macromedia Flash


flv


Macromedia Flash视频文件


rm


RealAudio和RealVideo


au


SUN AU格式


nut


NUT开放容器格式(实验性)


mov


QuickTime


mp4


MPEG-4格式


ipod


含有苹果 iPod 固件所需额外标志数据的 MPEG-4 格式


dv


Sony 数字视频容器格式


muxrate=


流合流时的标称比特率,单位为比特每秒; 当前该选项只对MPEG[12]有意义。 有时需要提高这个值以防止“缓冲下溢”。


packetsize=


所选格式单个数据包的大小,以字节为单位表示。 当将流合并至MPEG[12]的实现格式时,默认值为: 对于[S]VCD为2324,对于所有其它格式为2048。


preload=


当前只对MPEG[12]有意义:单位为秒,对于任意出现的流,输出流参照计时器(SCR)和解 码时间戳(DTS)间的初始差距(流分离至解码间的延迟)。