使用mencoder ,最关键的是明白参数。因为音频、视频格式太多,结果它的参数也是一大堆一大堆的。这里总结一下。
0, -vf
设置输出文件格式:
默认为avi格式,mencoder的默认格式。
需要其它格式,可以用 lavf
1, -oac
输出音频编码
copy
mp3lame -lameopts aq=7:vbr=2:q=6
q , 质量(0 - 最好,9 - 最差)(仅用于VBR)
aq,算法质量(0 - 最好/最慢,9 - 最差/最快)
编码方式包括有abr(按平均码率编码)、cbr(指固定码率编码)、vbr(按动态码率编码)三种
br=128 则指定编码码率为 128kbps。
2, -srate 32000
输出音频的采样率
音频的采样频率。频率通常有 22050、32000、44100 等几种。
3,-vf <滤镜1[=参数1:参数2:...],滤镜2,...>
设置一连串的视频滤镜
scale=320:240
rotate=
mirror
flip
4,-ovc
xvid -xvidencopts fixed_quant=8:bitrate=500 //xvid
lavc -lavcopts vcodec=mpeg2video:vbitrate=500 // mpg2
lavc -lavcopts vcodec=mpeg4:vbitrate=500 // mpg4
x264 -x264encopts bitrate=500 // x264
在 -lavcopts中,主要有这么几个:
vcodec: 视频编码格式
vbitrate: 数据比特率
mbd: 宏模块算法,0-2 , 默认为0, 越大品质越好
trell: 量子化网络搜索
cbp: 只能与 trell一起使用
dia=4 移动搜索范围
cmp=3
5,-ofps 30:(output fps)指定输出媒体文件的帧速,30fps指每秒种播放 30 个画面
6,
6.1. 选择编解码器及容器格式
编码使用的音频及视频编码器分别通过-oac及-ovc选项指定例如输入如下命令
mencoder -ovc help
可列出你机器上相应版本的MEncoder所支持的所有视频编码。下列选择也是可用的:
音频编码器:
音频编码器名称 | 描述 |
---|---|
mp3lame | 通过LAME编码为VBR,ABR或CBR格式的MP3文件 |
lavc | 利用libavcodec中的一个编码器 |
faac | FAAC AAC音频编码器 |
toolame | MPEG音频Layer 2编码器 |
twolame | 基于tooLAME的MPEG音频Layer 2编码器 |
pcm | 未压缩的PCM音频 |
copy | 不要重新编码,这是复制已压缩的各桢 |
是频编码器:
是频编码器名称 | 描述 |
---|---|
lavc | 使用libavcodec中的一个是频编码器 |
xvid | Xvid, MPEG-4高级简单格式(ASP)编码器 |
x264 | x264, MPEG-4高级视频编码(AVC), AKA H.264编码器 |
nuv | nuppel视频,为一些实时程序所用 |
raw | 未压缩的视频桢 |
copy | 不要重新编码,只是复制已压缩的各桢 |
frameno | 用于三通道编码(不推荐) |
输出容器格式通过-of选项选择。输入:
mencoder -of help
以便列出你机器上相应版本的MEncoder所支持的所有容器。如下选项也是可用的
容器格式:
容器格式名称 | 描述 |
---|---|
lavf | 由libavformat 支持的一种容器 |
avi | 音-视频混合 |
mpeg | MPEG-1及MPEG-2节目流 |
rawvideo | 原始视频流(未经混合 - 只含一视频流) |
rawaudio | 原始音频流(未经混合 - 只含一音频流) |
AVI容器是MEncoder的基本容器格式,也就是说它能够被最好的处理,MEncoder也是为之而设计。如上所述,其他容器格式也可被使用,但你使用的时候可能遇到问题。
libavformat容器:
如果你选择了libavformat来做输出文件的混编(通过使用-of lavf选项),适当的容器将由文件扩展名而定。你也可以通过libavformat的format选项强制一种容器格式。
libavformat容器名称 | 描述 |
---|---|
mpg | MPEG-1及MPEG-2节目流 |
asf | 高级流格式 |
avi | 音-视频混合 |
wav | 波形音频 |
swf | Macromedia Flash |
flv | Macromedia Flash视频 |
rm | RealMedia |
au | SUN AU |
nut | NUT开放容器(实验中,不兼容标准) |
mov | QuickTime |
mp4 | MPEG-4格式 |
dv | Sony数字视频容器 |
如你所见,libavformat允许MEncoder把媒体混合到各种格式的容器内。不巧的是,因为MEncoder从开始设计的时候没有支持AVI之外的其他容器,你要小心最终生成的文件。请多次检查以确认音频/视频同步是正确的以及文件能在MPlayer之外的播放器中播放。
例 6.1. 编码为Macromedia Flash格式
生成Macromedia Flash视频,以便在安装有Macromedia Flash插件的网页浏览器中播放:
mencoder input.avi -o output.flv -of lavf \ -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \ -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3
mencoder -ofps 15 -vf-add scale=176:144 -vf-add expand=176:144:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=500:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=96 "input.avi" -o "output.avi"
参数详解: 1、-ofps 15 :帧速率15fps 2、scale=176:144 :图像原始比例,如4:3/16:9 3、expand=176:144:转换后的分辨率 4、-srate 44100 :声音采样率44100Hz 5、-ovc xvid :视频编码格式XVID 6、-xvidencopts bitrate=500:视频编码率500Kbps 7、max_bframes=0:禁用BFrame 8、quant_type=h263:XVID编码的量化方式(建议改为mpeg) 9、me_quality=0:VHQ模式参数,动态搜索精度(6为精度最大值) 10、-lavcopts acodec=mp2:音频编码为MP2 11、abitrate=96 :音频编码率96Kbps
这样对于一个15fps视频最佳参数为: max_key_interval=150:max_bframes=0:profile=sp3:trellis:chroma_me:chroma_opt:hq_ac:quant_type=h263:me_quality=6:vhq=4 Xvid编码高级参数: 压缩过程中的视频码率建议不要超过192Kbps(因为对于加入了手动参数的Xvid编码器,画质提升是相当明显的),强烈建议用2-Pass压缩! 首先介绍一下这些高级参数的作用: cartoon:卡通模式,非卡通则去掉此参数 vhq=4:VHQ MODE(动态搜索算法),有0-4五个值,越大画质越好,但是编码速度越慢 me_quality=6: 动态搜索精度(6为精度最大值) chroma_me:动态检索 ,色彩动态评估 max_bframes=0 :B帧最大间距,设为0表示关闭B帧功能 profile=XXX :小于等于15fps设置为sp3,大于15fps设置为asp3 max_key_interval=XXX :最大I帧(关键帧)间隔,一般设置成帧数的10倍 Quant_type=mpeg:量化矩阵,Mpeg模式,如果压缩时去掉这段就默认量化矩阵为H.263 trellis:高质量量化模式 GMC:全域动态补偿 qpel:四分之一像素精确动态补偿(如果使用了该功能则可能降低解码速率,建议不用) bvhq=1:在B帧上启用VHQ lumi_mask:加大画面明暗部分压缩率(一般不用,有时会导致画面失真) greyscale:使用灰度,但是便出来的画面是黑白的(一般不使用) interlacing:隔行处理,适用于交错片源(一般不使用) chroma_opt:色度优化 ,色彩最佳化 Quantization量化选项(关键的关键就在这里!)
量化器级别(quantizer level)即Q值越高画面细节越丰富,但是在低码率下越高的量化器级别,会带来越低的画面质量,Q 值越小,质量越好,码率越大;Q 值越大,质量越差,码率越小。(实际上,它的原始概念更复杂,我们干脆简单地认为1就是100%原质量,31就是1/31的原质量好了)。P-frame(即未来单项预测帧)建议设置在1--15之间,(它的作用是只储存与之前一个已解压画面的差值。即仅仅描述它与前一帧的区别)。I-frame(即关键帧)的Q值只用能作用于2pass-second压制上,在VirtualDub被标示为 [K],关键帧是构成一个帧组(GOP,Group of Picture)的第一个帧。I-Frame 保留了一个场景的所有信息(Keyframe原意是指可以单独解码、用于同步的frame,不过在MPEG系统中只有I-frame有这个特性,因为BF和PF都是预测帧,要靠I-Frame来还原)。B-frame(即双向预测帧)除了参考之前解压过了的画面外,亦会参考后面一帧中的画面信息。这三个设置的范围都是1-31,应该注意的是在场景昏暗的条件下不要让B-frame过低。 min_iquant=1——IF的量化最低值(取值范围在1-31之间) max_iquant=10——IF的量化最高值(取值范围在1-31之间) min_pquant=1——PF的量化最低值(取值范围在1-31之间) max_pquant=10——PF的量化最高值(取值范围在1-31之间) min_bquant=1——BF的量化最低值(取值范围在1-31之间) max_bquant=30——BF的量化最低值(取值范围在1-31之间) -sws 9 取值范围在(0-9)之间,不同值代表不同的Resize算法!建议用 -sws 9 0 快速二次线性(默认)(速度较快) 1 二次线性 2 二次立方(质量很好) 3 实验中 4 最短距离 (bad quality) 5 区域 6 亮度二次立方 度二次线性 7 高斯 8 sincR 9 lanczos(速度较快,而且画面锐利) 10 双三次样条曲线 实际应用举例: vhq=4:cartoon:chroma_me:min_iquant=1:chroma_opt:min_iquant=1:max_iquant=12:min_pquant=1:max_pquant=12:bvhq=1:min_bquant=1 添加到WisMencoder的手动参数中的视频编码处,然后再把 -sws 9 参数添加到视频滤镜处即可!记得-sws 9前一定加个空格,要不编码器不会启动!当然你也可以自己摸索适合的方案,做出效果更佳的方案!