今天写了一个模块,主要是一个处理成员内容为一个结构体的队列抽象数据类型,主函数的代码如下: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-31
C中复杂的结构题的访问注意
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
官网上的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长的音频数据块)。 |
−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 |
指定包含有帧序号对应关系表的音频文件的文件名,该对应关系表是在特殊的三阶 段编码模式的第一阶段(只处理音频)中生成的。 |
−hr−edl−seek |
在跳过处理区域时使用一种更精确但相对很慢的方式。 不是定位标记为需跳过的处理区域,而是解码所有的帧并且只有编码需 要的帧。 该选项使从非关键帧的边界开始编码成为可能。 |
−info |
指定生成的AVI文件的头部信息内容。 可用选项有: |
help |
显示本部分描述。 |
name= |
作品的标题 |
artist= |
作品的作者 |
genre= |
原作的类别 |
subject= |
作品的内容 |
copyright= |
版权信息 |
srcform= |
数字化资料的原始格式 |
comment= |
关于作品的总体性注释 |
−noautoexpand |
不要自动在MEncoder滤镜链中插入扩展滤镜。 适用于将字幕内嵌入影片时控制在滤镜链中的哪一个点上渲染字幕。 |
−noencodedups |
不要尝试将重复的帧重复地编码;必须以输出零字节帧的方式表明有重复帧。 除非加载了能进行重复帧编码的滤镜或编码器,否则无论如何将写入零字节帧。 当前这样的滤镜只有hardup。 |
−noodml(仅用于−of avi的情况下) |
对于大于1GB的AVI文件不写入OpenDML索引。 |
−noskip |
不要跳过任何帧。 |
−o |
输出至所给的文件名。 |
−oac |
使用所给的音频编解码器编码(没有默认值)。 示例: |
−oac copy |
不编码,直接复制音频流 |
−oac pcm |
编码为未压缩的PCM格式。 |
−oac mp3lame |
编码为MP3格式(使用LAME)。 |
−oac lavc |
使用libavcodec编解码器编码。 |
−of |
编码为指定的容器格式(默认值:AVI)。 示例: |
−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 copy |
不编码,直接复制视频流 |
−ovc raw |
编码为任意的未压缩格式(使用‘−vf format’选择具体格式)。 |
−ovc lavc |
使用libavcodec编解码器编码。 |
−passlogfile |
在二阶段编码模式中将第一阶段的信息导出至 |
−skiplimit |
指定编码了一帧之后最多可以跳过的帧的数量(−noskiplimit表示无限 制)。 |
−vobsubout |
指定输出的.idx和.sub文件的主文件名。 该选项使字幕不在编码后影片得到渲染,而是将其转而输出至VOBsub的字幕文件。 |
−vobsuboutid |
为字幕指定双字母的语言代码。 该选项改写了从DVD或.ifo文件中读取的语言代码。 |
−vobsuboutindex |
指定输出文件中字幕的索引号(默认值:0)。 |
特定编解码器专用的编码选项(仅用于MENCODER)
你可以使用以下的句法指定特定编解码器专用的参数: |
− |
这里 |
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阶段编码模式中第二阶段以及之后各阶段的编码) |
以下展示了其如何工作,以及如何使用: |
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)。 |
4−16000 |
(单位为kbit) |
16001−24000000 |
(单位为bit) |
vratetol= |
文件大小控制中允许出入的数量,单位为kbit。 1000−100000是一个合理的范围。 (警告:1kbit = 1000 bits) (默认值:8000) |
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) |
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算法 |
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> |
空间复杂度屏蔽 如果没有解块效应滤镜用于解码过程,那么较大的值有助于消除块效应,但这可能不是一个 好办法。 |
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 |
2 |
size=2的常规菱形 |
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%,这取决于所使用的其它选项)。 |
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%)。 |
aiv |
用于H.263+的另一种帧间vlc模式 |
umv |
无限制的运动矢量(MV)(仅用于H.263+) 允许编码任意长的MV。 |
ibias=<−256−256> |
帧内量化器偏向系数(256等价于1.0,MPEG类型的量化器的默认值:96,H.263类型的量化 器的默认值:0) |
pbias=<−256−256> |
帧间量化器偏向系数(256等价于1.0,MPEG类型的量化器的默认值:0,H.263类型的量化器 的默认值:−64) |
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。 |
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= |
设置所使用的比特率。若值小于16000,则单位为千比特/ 秒;若值大于16000,则单位 为bits/second。 如果 |
fixed_quant=<1−31> |
切换至固定量化器模式,并指定所使用的量化器。 |
zones= |
用户指定的针对影片特定部分(片尾、演职员表、……)的质量值。 每个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 |
编码隔行扫描视频内容的扫描场。 打开该选项以用于隔行扫描内容。 |
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之类的不能处理乱序帧序列的容器格式时,所发生的帧顺序 问题。 实际应用中,大多数解码器(无论是软件的还是硬件的)都能够自己处理帧的顺序,因而当 此选项开启时可能反而引起混乱,所以你可以放心地让这个选项保留为关闭状态,除非你确 实知道你在做什么。 |
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 * (宽度/高度)。 |
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阶段(三阶段编码模式的第二和第三阶段) |
以下介绍的是其如何工作,以及使用这个参数: |
turbo=<0−2> |
快速第一阶段模式。 在二阶段或更多阶段编码的第一阶段中,可以通过禁用一些对于最终阶段输出质量影响甚 小,甚至没有影响的选项,以提升运行速度。 |
0 |
禁用(默认值) |
1 |
减小subq、frameref的值,并且禁用一些宏块间划分分析的模式。 |
2 |
减小subq、frameref至1,使用菱形运动估计搜索,并且禁用所有划分分析模式。 |
第1级可以最多使第一阶段的速度加快至2倍,而与完全质量的第一阶段模式相比,对于最 终阶段的全局PSNR没有任何改变。 |
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内循环反块效应滤镜所用的阈值。 第一,该参数调整的是滤镜对于任何一个像素所允许产生的变动的最大数量。 第二,该参数影响的是将被滤除的边界两侧差别的阈值。 正数值使更多的块效应损伤得到削减,但同时也会损伤画面细节。 |
(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= |
局部最大的比特率,单位为千比特/ 秒(默认值:禁用) |
vbv_bufsize= |
计算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的格式是 |
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三种宏块类型总是启用的。 |
(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= |
自定义的4x4帧内亮度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。 |
cqm4ic= |
自定义的4x4帧内色度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。 |
cqm4py= |
自定义的4x4帧间亮度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。 |
cqm4pc= |
自定义的4x4帧间色度矩阵,以由16个逗号分隔值域为1−255的值组成的列表的形式给出。 |
cqm8iy= |
自定义的8x8帧内亮度矩阵,以由64个逗号分隔值域为1−255的值组成的列表的形式给出。 |
cqm8py= |
自定义的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 |
打印信噪比统计信息。 |
(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)间的初始差距(流分离至解码间的延迟)。 |