Mplayer的秘密功能
Mplayer的秘密功能
用过 Linux 的人一般都会听说过 MPlayer 的大名,在媒体播放领域它简直是无所不能,支持绝大多数媒体格式,支持各种输入方式,能通过各种网络协议透明地访问远程文件,还支持很多种输出方式,用 directfb 方式就可以在 Console 下看电影,没有有尝试过?那感觉真的很棒!
用 MPlayer 来看电影是显然的,至于用它来压缩视频就很少有人尝试了,我也是今天才知道:-) 更准确地说,是用 MPlayer项目中的一个工具 MEncoder 来进行视频压缩,它是 MPlayer 的一部分,安装 MPlayer 时里面都会带有 MEncoder。
MEncoder 的常用用法如下:
mencoder input_file -oac acodec -ovc vcodec -o output_file |
1、同 MPlayer 一样,它的输入文件也可以是远程文件,比如 ftp, http 等协议的 URL,或者设备文件,比如DVD、VCD等,
2、 通过 -oac 选项来指定压缩时所用的音频编码器,它可以是 copy、mp3lame、toolame、lavc等,其中 copy是指直接拷贝音频流而不重新编码。它们还可以有自己的参数,通过 -acodecopts 的方式来指定,比如 lavc 的参数acodec=mp2 和 abitrate = 128,可以这样指定
-oac lavc -lavcopts acodec=mp2:abitrate=128 |
3、类似,通过 -ovc 选项来指定视频编码器,它可以是 copy, lavc, xvidenc, divx4, x264enc,mpeg等,其中 lavc 是功能最强大的编码器集合,里面包括多种音视频编码器,音频编码器包括mp2, mp3, ac3,adpcm_ima_wav,视频编码器见下表:
Codec name | Description |
---|---|
mjpeg | Motion JPEG |
ljpeg | Lossless JPEG |
h263 | H.263 |
h263p | H.263+ |
mpeg4 | ISO standard MPEG-4 (DivX 5, XVID compatible) |
msmpeg4 | pre-standard MPEG-4 variant by MS, v3 (AKA DivX3) |
msmpeg4v2 | pre-standard MPEG-4 by MS, v2 (used in old asf files) |
wmv1 | Windows Media Video, version 1 (AKA WMV7) |
wmv2 | Windows Media Video, version 2 (AKA WMV8) |
rv10 | an old RealVideo codec |
mpeg1video | MPEG-1 video |
mpeg2video | MPEG-2 video |
huffyuv | lossless compression |
asv1 | ASUS Video v1 |
asv2 | ASUS Video v2 |
ffv1 | FFmpeg's lossless video codec |
通过 -lavcopts 选项指定 lavc 模块的参数来设定音频和视频编码器,以及其它参数,如比特律。
一个完整的使用 MEncode 来压缩媒体文件的例子如下:
mencoder VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOBVTS_01_5.VOB -oac mp3lame -lameopts mode=2:cbr:br=192:vol=6 -ovc xvid-xvidencopts bitrate=1200 -sub 1.srt -o MyBossDaughter.avi
在 用这些参数进行压缩时,可以达到 200帧/秒的速度,而在同一台机器上用 Real Producer 10来进行类似压缩比的压缩,只有 30-60 帧/秒的速度,这可能与我的 MEncoder是经过优化编译的有关,里面包括了对各种多媒体指令集的支持。难道 Real Producer 里面没有这样的优化?那也太不可思议了……
此外,MEncoder 还支持各种 filter, 以实现画面的剪裁、更改分辨率等需求。
关于 MEncoder 更详细的用法请参照它的官方文档,关于各种参数的设置请参照参数说明。
MPlayer 也有 Windows 下的版本,其中就带有 MEncoder。
-----------------------------------------------------------------------------------------------------------
由于mp4要改文件头,时间没节约多少,所以不介绍了
mencoder是一个linux下的视频播放工具(mplayer)自带的编码工具,mplayer就像影音风暴那样各种视频格式几乎通吃,由于mplayer与mencoder地层属同一架构,mencoder支持的格式也非常多。现在mencoder已经有windows版本(win32版)和mac版。
可以针对cpu的结构优化编译,在cpu家族的不同的成员上运行的二进制文件,不同cpu有相应的程序,充分利用处理器性能。
优点:是速度快,参数多,可以手工添加所需的各项参数,而且支持格式多mpeg、avi、rm、rmvb、mkv、dat、dvd等等,而且从未出现过影音不同步问题。
(新版本已支持wmv,asf格式:x:)
缺点:想手动相机一样,功能强大但指针对摄影师。mencoder需要使用命令行,这对熟悉linux和dos的朋友并不是难题,但对计算机“小白”就有些棘手。
幸好有人为wencoder开发了界面程序——winmenc,实现了简单的参数设置,可以利用其生成可执行的批处理文件(*.bat),稍后我们来学习他的使用。
安装方法::x:
自己建立安装目录,创建一个新文件夹,名字可以定为winmenc,将下列下载的文件解压到此文件夹中。
1. 下载winmenc
2.下载合适的mencoder 并解压在相同文件夹中。
[precompiled mencoder binaries - xvid 1.1.x branch]
mencoder-k7 for amd cpu
mencoder-p3 for piii cpu
mencoder-p4 for p4 cpu
3.下载 code package - windows essential 并解压在相同文件夹中。
4.下载mplayer-font,用于压入字幕用
ps:解压存放到 winmencfont的自建文件夹中,以后会用到。
最终我们会使用 winmencfontgb2312-kaigkai00mp16font.desc
如前面介绍的那样,winmenc.exe是一个制作运行文件的界面程序,它提供简单参数设定。
运行后会出现dos下的对话框,显示执行过程和时间。实际是生成批处理文件encode.bat,并马上执行。关闭dos下的对话框就可以停止编码,你会看到在目标文件夹,已经生成了你想要的起始部分,因为是二进制编码,你用播放器直接就可打开,查看编码质量。满意后可让其完整编码。
encode.bat用右键点击选择编辑,我们会看到下列命令行:
mencoder.exe-srate 32000 -af channels=2:2:1:0:1:1 -oac mp3lame -lameopts mode=2:cbr:br=32 -ovc xvid -xvidencopts bitrate=200 -vf scale=480:-3 -sws 9"c: documents and settingskfjiang桌面dance.avi" -o "c: documents andsettingskfjiang桌面dance.xvid.avi" 2> 2.txt
这只是winmenc.exe生成的,还是未加其它参数,我们还可以添加其它参数。
参数说明:
-srate 32000 : 声音采样率,22050hz
-af channels=2:2:1:0:1:1 右声道 / -af channels=2:2:0:0:0:1 左声道 / -stereo 0 立体声
-oac mp3lame : 输出音频使用mp3编码
-lameopts mode=2:cbr:br=32 : 码率br=32 kbit
-ovc xvid -xvidencopts bitrate=200 : 以xvid方式编码,码率200kbps (经实验,目前divx比xvid要快,在使用vhq功能时会稍稍影响速度)
-vf scale=480:-3 -sws 9 :变换至480像素宽,高度按比例缩放
"c:documents and settingskfjiang桌面dance.avi" -o "c:documents and settingskfjiang桌面dance.xvid.avi"
源文件地址 到 输出文件地址
2> 2.txt : 编码日志记录地址
此外对于divx编码:
-ovc lavc
-ffourcc dx50
-lavcopts vcodec=mpeg4:vhq:vbitrate=350
vhq:vbitrate=350 超高画质只对应divx编码(very high quality for divx only)
例如:
encode.bat样例:
mencoder.exe-srate 22050 -stereo 0 -oac mp3lame -lameopts mode=2:cbr:br= 96:vol=8-ovc lavc -ffourcc dx50 -lavcopts vcodec=mpeg4:vhq:vbitrate=350 - ofps18 -vf scale=480:-3 -sws 9 "e:影视j单身日记2理性边缘 itty''s single diary 2.rmvb"-o "e:影视j单身日记2理性边缘 itty''s single
diary 2.divx.avi" 2> 2.txt
其他参数:
以下是winmenc.exe没有给出的参数,需要自行加入
-lameopts mode=2:cbr:br=96:vol=3 : 码率,96 kbit vol为音量(取值0-10,数值越大音量越大,不宜过大,否则会后爆音。)
-ofps 18 :帧数18帧每秒,可以根据情况更改(fps值小可以提高编码速度,但是太小就太钝了,最小别小于8,经济的15比较好)
--------------------参数选择分析------------------------
18fps:这是以前通过多次测试得来的,一般电视剧和动画片15fps就够用了。如果场景变换不是很大,13fps就能保证播放流畅。降低fps值可以使压缩速度更快,对于电影,特别是动作片,要保证流畅无马赛克,就要提高fps,最大24就够了
选择18fps足以应付大部分,性价比高:f:
音频采样率32khz:从录音设备的得来的灵感(以下质量说明为比喻,前面的参数时原有的)
32khz - 32kbps - mono 比电话音好些
44khz - 64kbps - j-stereo 收音机质量
44khz -128kbps - j-stereo 通行的mp3标准质量
44khz -192kbps - stereo 接近cd质量
经过多次试验(以上是区间范围,自己可以根据需要选择)
压片最省空间 - 使用32khz - 32kbps - mono,可以保证内容;
质量要求不高 - 可用32khz - 128kbps - mono 性价比比较高;
空间大高质量 - 44khz -192kbps - stereo 对大sd卡用户。
总的来说,输出文件的大小受视频采样率、音频采样率影响效果显著,画面尺寸、fps值也影响大小。怎样设置参数要看你的个人实际需要与机器配置。
另外,还有很多不知道的参数
比如:pess2、pess3、动态fps、屏幕截取、时间区间设置等
使用技巧:
1.可以先压制部分片子,看影音质量在定参数。但是由于系统原因,以生成的新文件.avi 无法重新写入,导致无法执行修改好的.bat文件。
这时可以通过修改.bat文件中的输出文件名解决。
2.由于winmenc.exe现行版本参数不全,你可以将每次设置好的.bat文件重命名。标清参数,下次使用可以直接更新源文件和输出文件名即可。
3.同等bit的情况下,立体声的效果要明显低于mono,因为它有两个声道,各自占了一半。
4.另外有些电影4:3,所以480:-3会导致480:360,也就超过了480:320,结果在tcpmp上放会自动缩小,使得左右都有黑边,很不爽,而且白白浪费码率在多余的像素压缩上。
所以有时候不能用480:-3,而得用-3:320楼主说的gui没提供这个参数,得手动修改。
5.关于音量调节:
个人习惯是不用耳机的,天热带着不舒服,所以声音我一向偏大。
我的经验如果片源是dvdrip,一般在5以上,如果是rmvb一般2就够了,再大就有爆音了。
-oac mp3lame -lameopts mode=2:cbr:br=64:vol=2 大家来试试看吧
6.mplayer可以放wmv9了, mencoder也可以压wmv9, 但是视频效果比较差, 码率好像不起作用(ps:wmv编码一直都是ms的小秘密,其他人只是靠猜测、试验来了解它的编码,mencoder也是,慢慢会好起来的:f:)
关于字幕
mencoder.exe-srate 32000 -af channels=2:2:1:0:1:1 -oac mp3lame -lameoptsmode=2:cbr:br=32 -ovc lavc -ffourcc dx50 -lavcoptsvcodec=mpeg4:vhq:vbitrate=300 -ofps 15 -vf scale=480:-3 -sws 9 -sub"e:12.srt" -o "e:14.avi" -font"e:1winmencfrontgb2312-kaigkai00mp16font.desc"
"e:12.avi" -unicode
以上是命令的基本形式 前面的命令都是一样的
-sub "e:12.srt"是字幕文件的位置
-o "e:14.avi"是输出文件位置
-font "e:1winmencfontgb2312-kaigkai00mp16font.desc"是font文件的位置
"e:12.avi"是原文件的位置