MEncoder(MPlayer的电影编码器)是一个简单的电影编码器,设计用来把MPlayer可播放的电影(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/ VIV/FLI/RM/NUV/NET)编码成其它MPlayer可播放的格式(见下面)。它能以各种各样的编码格式进行编码,像DivX4(1或者2 pass),libavcodec, PCM/MP3/VBR MP3音频。同时也有强大的插件系统来操控视频。
lame
的二进制文件是不够的。顺便说一下:你对lame使用的优化越少,质量越好。lame编译完成之后,
你能通过运行make test
来测试质量。结果的数字应该少于30。如果它是400之类也不必惊慌,你不应该听到任何可觉察的质量降低。
啊,如果你的编译程序连make test
都运行不了...好吧,把那个GCC 2.96删掉或者把lame升级到至少3.90。libjpeg
和libpng
,-- 如同安装部分中所说的准备完毕。正如你可能知道的,其它编码的工具需要安装avifile的库。MEncoder根本不需要。
-ofps
选项进行FPS修正(用于把29.97fps的VOB编码成为24fps的AVI)2-pass编码:名称来自这种方法实际把文件编码两次的事实。第一次编码(又称为pass)创建一些临时性的几兆的文件(*.log), 先不要删除他们(你可以把AVI删了)。在第二次pass中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个, 你应该在网上查阅一些可用的指南。
这个例子演示如何把DVD编码成为2-pass DivX4 AVI。只需要两个命令:
rm frameno.avi
-- 删掉这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)
mencoder -dvd 2 -lavcopts
-vcodec=mpeg4:more_options -o movie.avi -pass 1
mencoder -dvd 2 -lavcopts vcodec=mpeg4:more_options
-o movie.avi -pass 2
3-pass编码:这是2-pass编码的扩展,对音频的编码使用一个单独的pass。这种方法提供推荐视频比特率的估计以使之能够适合CD的容量。同时, 不同于2-pass方式,音频仅仅被编码一次。示例:
rm frameno.avi
mencoder <file/DVD> -ovc frameno -o frameno.avi
将创建一个只有音频的avi文件,只包含要求的音频流。不要忘记-lameopts
,如果需要的话设置它。如果你对一部长的电影进行编码,
MEncoder在这个pass结束之后,将对于650Mb,700Mb,和800Mb的目标大小打印推荐的比特率值。
mencoder <file/DVD> -oac copy -pass 1
-ovc divx4 -divx4opts br=<bitrate>
又称为DivX4视频编码的第一次pass。可以选择指定在上一步结束时MEncoder打印的视频比特率。
mencoder <file/DVD> -oac copy -pass 2
-ovc divx4 -divx4opts br=<bitrate>
又称为DivX4视频编码的第二次pass。可以选择指定在上一步结束时MEncoder打印的视频比特率。在这次pass中,用frameno.avi
中的音频将被插入到目的文件中..这就全部搞定了!
rm frameno.avi
-- 移去这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)
mencoder -dvd 2 -ovc frameno
-o frameno.avi
mencoder -dvd 2
-lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 1
mencoder -dvd 2
-lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 2
使用内部的libavcodec控制器的2或者3-pass编码:你可以选择使用libavcodec内部的2或者3-pass方式, 它在使用libavcodec时可能能提供比使用外部的DivX4制作的2-pass控制器更好的最终比特率的精确度。
rm -f lavc_stats.txt
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 (audio-options) -o
movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 (audio-options) -o
movie.avi
rm -f frameno.avi lavc_stats.txt
mencoder -dvd 2 -ovc frameno (audio-options) -o frameno.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o
movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o
movie.avi
把电影图象的尺寸重新设置的需要经常出现。原因可能很多,例如减小输出文件的大小,把SVCD编码为到DivX。提取的DVD多半需要重新缩放,例如一个4:3的 DVD应该是640x480,当你希望它合适1张CD,并且同时还有不错的质量的时候。SVCD是480x480的尺寸,而他们的头部包含播放器应该使用的长宽比(例如: 480x480 + 4:3 = 640x480)。 然而当编码成为AVI(DivX)文件时,你必须了解AVI的头部不存储这个值。这样,唯一的解决方法是重新缩放。
缩放过程由'scale'视频滤镜处理:-vop scale=X:Y
。其质量由-sws
选项控制。如果它没有指定,
MEncoder将使用0:快速二次线性。
用法:
mencoder sample-svcd.mpg -lavcopts
vcodec=mpeg4:more_options -vop scale=640:480 -sws 2 -o
output.avi
MEncoder能用两种方式处理输入流:编码或者复制他们。这部分是关于复制的。
-ovc copy
选项): 可以干的很好:)-oac copy
选项): 直接了当。可以把一个外部音频文件(MP3,Vorbis)合波到输出流中。
使用-audiofile <filename>
选择来实现这个功能。最容易的事情。我们简单地复制视频和音频流,并用MEncoder产生索引。当然这不能修复视频和/或者音频流中可能的错误。
这同样也可以修复交错损坏的文件,
使它们不再需要-ni
选项。
命令:mencoder -idx input.avi -ovc copy -oac copy -o output.avi
libavcodec提供简单编码许多有趣的视频和音频格式(目前其音频编码器还不支持)的方法。 你能编码下列的编码格式:
第一个列包含应该传给vcodec
配置的编码格式的名称,比如:-lavcopts vcodec=msmpeg4
例如,对于使用MJPEG压缩:
mencoder -dvd 2 -o title2.avi -ovc lavc
-lavcopts vcodec=mjpeg
MEncoder具有从一个或多个JPEG,PNG或TGA文件创建电影的能力。通过简单的framecopy它能创建MJPEG(Motion JPEG), MPNG(Motion PNG )或MTGA(Motion TGA)文件。
处理过程的解释:libjpeg
解码输入图像(当解码PNG时将使用libpng)。-mf
选项的解释能在全局选项部分和manpage中被找到。
用当前目录中的所有JPEG文件创建DivX4文件:
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
output.avi
用当前目录中的一些JPEG文件创建DivX4文件:
mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
output.avi
用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi
用当前目录中的所有PNG文件创建一个非压缩的文件:
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o
output.avi
用当前目录中的所有PNG文件创建Motion PNG(MPNG)文件:
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o output.avi
用当前目录中的所有TGA文件创建Motion TGA(MTGA)文件:
mencoder \*.tga -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-o output.avi
MEncoder有把DVD字幕提取到Vobsub格式的文件的能力。包括以.idx
和.sub
结尾的一对
文件而且通常打包在一个单一的.rar
文档中。MPlayer能使用-vobsub
和-vobsubid
选项播放它们。
你使用-vobsubout
选项规定输出文件的基名称(就是不包括.idx
或者.sub
的后缀)和
-vobsuboutindex
指定字幕在输出文件中的索引号。
如果输入不是来自DVD你必须使用-ifo
来指明构造.idx
文件需要的.ifo
文件。
如果输入不是来自DVD而且你也没有.ifo
文件你将需要使用-vobsubid
选项让它了解在.idx
文件中放置什么样的language id。
如果.idx
和.sub
文件已经存在,每次运行将追加运行获得的字幕。因此,你应该在开始之前删掉所有东西。
在进行3-pass编码的同时从DVD复制两份字幕
rm subtitles.idx subtitles.sub
mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno
mencoder -dvd 1 -oac copy -ovc divx4 -pass 1
mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5
从一个MPEG文件中复制法语字幕
rm subtitles.idx subtitles.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 1
MEncoder可用的选项和例子的完全列表,请参见manpage。