MEncoder的基础用法
如果你想得到MEncoder的有效选项列表,请参照man页。
对于一系列简易的例子以及几个编码参数的详细说明,参照从MPlayer-users邮件列表
的一些邮件中搜集来的编码小窍门。
从压缩包
中还可以找到大量的关于MEncoder编码的各个方面的讨论
以及用其编码的相关问题。
选择编解码器及容器格式
编码使用的音频及视频编码器分别通过及
选项指定
例如输入如下命令
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
用于三通道编码(不推荐)
输出容器格式通过选项选择。
输入:
mencoder -of help
以便列出你机器上相应版本的MEncoder所支持的
所有容器。
如下选项也是可用的
容器格式:
容器格式名称描述
lavf
由libavformat
支持的一种容器
avi
音-视频混合
mpeg
MPEG-1及MPEG-2节目流
rawvideo
原始视频流(未经混合 - 只含一视频流)
rawaudio
原始音频流(未经混合 - 只含一音频流)
AVI容器是MEncoder的基本容器格式,也就是说它能够
被最好的处理,MEncoder也是为之而设计。
如上所述,其他容器格式也可被使用,但你使用的时候可能遇到问题。
libavformat容器:
如果你选择了libavformat
来做输出文件的混编(通过使用选项),
适当的容器将由文件扩展名而定。
你也可以通过libavformat的
选项强制一种容器格式。
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之外的播放器中播放。
编码为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可以从文件或直接从DVD或VCD的盘片进行编码。
秩序在命令行中包含文件名以便从文件进行编码,或
标题数或
轨道数以便从DVD标题或VCD轨
道进行编码。
如果你已经把DVD复制到你的硬盘上(你可以使用像dvdbackup
这样的工具,大多数系统上都有),然后想从副本进行编码,你仍需使用
语法,加上附带了指向DVD副本的根目录的
选项。
及选项也能用于
覆盖用来直接从光盘中直接读取数据的设备的路径,如果缺省的
/dev/dvd及/dev/cdrom在你的系统上步工作
的话。
当从DVD进行编码时,最好是选其中的一章或几章进行编码。
为此你可以使用选项。
例如 1-4将只编码DVD中的1至4章。
如果你针对包含1400MB数据的两张CD进行编码,这将非常有用,因为你可以确定只在一章的边
缘处分割,而不是在一个场景中间。
如果你有张被支持的电视卡,你也可以通过播放电视节目的设备进行编码。
使用channelnumber为文件名,
并用配置各种截取选项。
DVB输入工作原理类似。
编码为双通道MPEG-4 ("DivX")
之所以这样命名,是因为这种编码两次对文件进行编码。
第一次编码(配音通道)生成一些几兆大的临时文件(*.log),
先不要删除它们(你可以删除AVI或者通过重定向到/dev/null
而不生成视频)。第二次编码时,生成了双通道输出文件,使用的即是从临时文件提供
的比特律数据。生成文件会有更好的图像质量。如果这是你第一次听说,你可以在互联
网上找到相关参考。
复制音轨
双通道编码在复制音轨时将DVD的第二个轨道转换成MPEG-4 ("DivX") AVI。
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac copy -o output.avi
对音轨编码
将一个DVD编码成MPEG-4 ("DivX") AVI,音轨采用MP3格式
使用这个方法的时候要当心,因为有时它可能造成音/视频不同步。
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
-oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac mp3lame -lameopts vbr=3 -o output.avi
编码为Sony PSP视频格式
MEncoder支持到Sony PSP的视频格式转换,但是依赖于
PSP软件修改,对不同软件限制也许会有不同。
如果你遵守如下守则,你将不会遇到什么问题:
比特律:不应超过每秒1500kb,然而过去的版本
几乎支持任何比特律只要头文件声明其不是太高。
维数:PSP视频的长宽应是16的倍数,并且长*宽的
积应<= 64000。
在一些情况下,PSP可能播放更高分辨率的文件。
音频:其采样率针对MPEG-4应为24kHz,针对H.264
为48kHz。
编码到PSP
mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -of lavf \
-oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac \
-lavfopts format=psp:i_certify_that_my_video_stream_does_not_use_b_frames \
input.video -o output.psp
注意你可以通过
为视频摄者标题。
编码为MPEG格式
MEncoder可生成MPEG (MPEG-节目流)格式的文件。
通常,当你使用MPEG-1或MPEG-2视频,是因为你的编码受限于SVCD, VCD, 或DVD。
这些格式所需的特别要求将在
VCD及DVD生成指南
中进行解释
section.
要改变MEncoder的输出文件格式,使用
选项。
例如:
mencoder input.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \
-oac copy other_options -o output.mpg
可生成为只有有限多媒体支持的系统进行播放的MPEG-1文件,例如默认安装的Windows:
mencoder input.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
-o output.mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
-lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
同上,但使用了libavformat MPEG混合器:
mencoder input.avi -o VCD.mpg -ofps 25 -vf scale=352:288,harddup -of lavf \
-lavfopts format=mpg:i_certify_that_my_video_stream_does_not_use_b_frames \
-oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0
提示:
如果由于某种原因,第二次编码的效果不能令你满意,你可以使用另外一种比特律
重新执行视频编码,只要你保存了前一次编码中生成的统计文件。
这是可行因为生成统计文件的主要目的是记录每桢的复杂度,不是特别依赖于比特律。
然而,你要注意的是如果所有编码按照与最终生成文件的比特律相差不大的参数执行
程序,你将得到最佳效果。
改变电影大小
经常出现要改变电影图片大小的需求。原因可能是多样的:减小文件大小,网络带宽
等等。大多数人甚至在将DVD或SVCD转换成DivX AVI时也改变影片大小。如果你想改变
影片大小,阅读保持长宽比一节
变换过程由scale视频滤镜处理:
。
输出质量可由选项调节。
如果没有设置,MEncoder将使用2:双三次。
用法:
mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
-vf scale=640:480 -o output.avi
媒体流复制
MEncoder能以两种方式处理输入媒体流:
编码或复制。
本节是关于复制的。
视频流 (选项):
一系列工作可以完成的很好 :) 好像把FLI或VIVO或MPEG-1视频放入(不是转换)到
一个AVI文件中!当然,只有MPlayer能播放这样的文
件:)并且也许它并没有生活上的实际价值。实际意义上:当只有音频流要被编码(
例如从无压缩的PCM到MP3)时,视频流才可能有用。
音频流 (选项):
直接的。你可能提取一个外部音频文件(MP3,WAV)并将其合成到一个输出媒体流里。
为此可使用选项。
使用从一种容器格式复制到另一种容器格式时,你可能需要
使用选项以保持原始文件的音频格式标签。例如,如果你将
一个使用AAC音频的NSV文件转换到AVI容器中,音频格式文件标签可能是错误的,需要被
转换。对于详细的音频格式标签,查看codecs.conf。
例子:
mencoder input.nsv -oac copy -fafmttag 0x706D \
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o output.avi
从多个输入图像文件进行编码(JPEG, PNG, TGA等)
MEncoder可以通过一个或多个JPEG, PNG, TGA, 或其
他图片文件制作电影。使用简单的桢复制,它能生成MJPEG (移动JPEG), MPNG
(移动PNG)或MTGA (移动TGA) 文件。
进程描述:
MEncoder使用libjpeg
(当解码PNG时,它将使用libpng)将输入图片进行
解码。
MEncoder然后将解码好的图片送到被选定的视频压缩器中
(DivX4, Xvid, FFmpeg msmpeg4等)。
例子
关于选项的解释在man页中。
使用当前目录下所有JPEG文件生成MPEG-4文件。
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
使用当前目录中的一些JPEG文件生成MPEG-4文件。
mencoder mf://frame001.jpg,frame002.jpg -mf w=800:h=600:fps=25:type=jpg \
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
使用显示指示的一系列JPEG文件生成MPEG-4文件(当前目录下的list.txt包含被用做源的文件列表,
一个一行):
mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
使用当前目录下所有JPEG文件生成移动JPEG(MJPEG)文件:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi
使用当前目录下所有PNG文件生成未压缩的文件:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi
宽度必须是4的倍数,这是原始RGB AVI文件格式的限制。
使用当前目录下所有PNG文件生成移动PNG (MPNG)文件:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o output.avi
使用当前目录下的所有TGA文件生成移动TGA (MTGA)文件:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o output.avi
保持视频画面比例
DVD及SVCD(例如MPEG-1/2)文件包含画面比例,此信息可用来指示播放器应如何显示视频流,
所以显示的人不会有个鸡蛋头(例如480x480 + 4:3 = 640x480)。然而当编码为AVI(DivX)
文件时,你要小心AVI头信息里没有包含这些值。重新设置这些比例是非常讨厌并且很花时间,
应该有更好的方法!
还有
MPEG-4有个独特的特点:视频流可以包含它需要的画面比例。是的,正像MPEG-1/2 (DVD,
SVCD)及H.263文件一样。可惜的是,除了MPlayer几乎没有播放器
支持这项MPEG-4属性。
这种特性之可以与
libavcodec的
mpeg4编码器一同使用。记住:虽然
MPlayer可以正常播放所生成的文件,其他播放器可能使用错误
的图象比例。
你应剪切电影图像上下方的黑条。针对cropdetect及
crop滤镜的用法参考man页。
用法
mencoder sample-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o output.avi