因为刚好有些视频要转,google了一下,网上有很多Ubuntu视频转换工具mencoder的介绍,使用以后,觉得有必要汇总一下,留以他用。 feedom.net
CODE:
mencoder [options] file1 [specific options] [file2] [specific options]
mencoder src.avi -o dst.avi -vf scale=320:240 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500
# src.avi 原文件
# -o dst.avi 定义压缩为dst.avi
# -vf scale=320:240,调整视频尺寸到320×240;
# -oac copy,指定音频编码器,copy是指不压缩,直接使用源文件里的音频。copy换成 mp3lame,即压缩成mp3。
# -ovc lavc,指定视频编码器,使用libavcodec编码器;
# -lavcopts vcodec=mpeg4:vbitrate=500,指定libavcodec的参数,vcodec=mpeg4指使用mpeg4压缩,就是DivX,vbitrate=500指500kbps的比特率。
CODE:
mencoder src.avi -o dst.flv -of lavf -oac mp3lame -lameopts abr:br=32:mode=3 -ovc lavc i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2
# src.avi 输入文件路径,是Mplayer能支持的格式即可
# -o dst.flv 输出路径
# -of lavf 输出格式 lavf表示libavcodec
# -oac mp3lame 输出音频编码方式,lame是最好的mp3编码器
# -lameopts abr:br=32:mode=3 abr代表平均码率,相对于cbr(固定码率)和vbr(可变码率,貌似不支持),br就是音频的码率,越高音质越好,mode=3,0-3分别代表 Stereo,Joint Stereo,Force ms_stereo,Mono(默认为自动,事实上1和3对文件大小的影响并不是很大),另外可选的还有 vol(音量,取值0-10,数值越大音量越大,不建议修改)等
# -srate 22050 声音采样频率设置,也可以选11025,文件可以稍小一点
# -ovc lavc 输出视频编码 lavc就是libavcodec
# -lavcopts codec=flv flv格式压缩 vbitrate=150 视频码率
# -vf scale=350:-3 -sws 2 缩放视频,指定宽度为350,高度按比例来。质量由-sws选项控制,具体看手册
# -ofps 23 设定帧数,缩小帧数对节约文件大小效果不明显,且可能造成画面声音同步。建议不设置
CODE:
mencoder -srate 22050 -vf scale=208:-3 -ofps 12 -oac mp3lame -lameopts mode=3:cbr:br=24 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112 src.avi -o dst.avi
# -srate 22050 声音采样频率设置,现为22K
# -vf scale=208:-3 宽度为208,高度自动调整保持比例;-vf scale=-3:176宽度自动调整保持比例,高度为176;如果想保持原来的大小可以不要这个参数
# -ofps 12 帧速率设置,现为12fps
# -oac mp3lame 音频采用mp3编码
# -lameopts mode=3:cbr:br=24单声道,音频码率为24kbps;-lameopts mode=0:cbr:br=24立体声,音频码率为24kbps; 还可设置音量,-lameopts mode=3:cbr:br=32:vol=1,设置范置为1~10,但不宜设得太高
# -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112采用高质DivX视频编码,视频码率为112kbps;
# -ovc xvid -xvidencopts bitrate=112采用XviD视频编码
音频:动态码率,质量6 (0-9,0最好),编码:mp3,采样:32000Hz,音频算法:7
视频:动态码率,质量 8(0-31,0最好),编码:xvid,尺寸:不改变大小
CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi
音频:动态码率,质量6 ,编码:mp3,采样:32000Hz,音频算法:7
视频:动态码率,质量 8 ,编码:xvid,尺寸:320:240
CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf scale=320:240,harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi
音频:固定码率,编码:64kbps,采样:32000Hz ,音频算法:7
视频:动态码率,质量 4(高) ,编码:xvid
CODE:
mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=4 src.avi -o dst.avi
音频:动态码率,质量 4 (0-9,0最好),编码:mp3,采样:32000Hz,音频算法:7
视频:动态码率,质量 8(0-31,0最好),编码:xvid,尺寸:原尺寸
CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=4 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi
Ps: I didn’t test the result! Attentions please!
mencoder转flv并添加字幕
mencoder Sample.avi -o Sample.flv -of lavf -oac mp3lame -lameopts abr:br=32:vol=1 -ovc lavc -lavcopts vcodec=flv:vbitrate=220:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:vb_strategy=1 -sws 3 -vf harddup,scale=384:-2 -ofps 24 -srate 22050 -sub boxue123.srt -font simhei.ttf -subfont-text-scale 3 -subfont-outline 2 -subfont-blur 2 -subpos 10 -subcp CP936
加字幕相关参数:
-sub boxue123.srt srt字幕文件路径;
-font simhei.ttf 字体文件的路径;
-subfont-text-scale 3 字体缩放;
-subfont-outline 2 字体轮廓;
-subcp CP936 应该是字体编码;
-subfont-blur 2 字体模糊;
-subpos 10 字体显示垂直方向的位置;
实现mencoder转换加字幕是从网上一篇文章winmenc给视频加字幕的文章中得到的灵感,而winmenc内核就是mencoder,当时我想能不能通过这个功能实现字幕呢,比如我的字幕从头到位都是一句话。于是baidu google了半天,最后终于发现了关于配字幕上去的命令参数
于是。。。
1.准备好一个srt字幕,网上有得下,随便下一个即可,把时间改成00:00:00,000 –> 00:50:20,000,当然后面的时间你设多长都可以,超过你转换的视频长度即可。
2.准备好一个字体文件,目前我的这种方法测试过,不支持中文,支持中文的话必须把字幕给带上。
3.开始mencoder的转换,具体命令如下
C:mencoder>mencoder “c:1.avi” -o “c:1.flv” -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:last_pred=3 -subpos 5 -subfont-text-scale 10 -unicode -font “c:arial.ttf” -sub “c:1.srt” -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -srate 22050
前面的我就不说了,具体参数参见小鱼的关于mencoder转换控制视频质量。
重点说后面的
subpos 是说明字幕的位置:垂直方向上越大越靠下,水平方向的参数我没找到,最小0,最大100
subfont-text-scale 设置字体的大小
-unicode 文字编码方式,其他的没试过
-font 字体文件
-sub 你的字幕文件
顺便这里感谢一句,刚开始转FLV的时候,老是转不了,闪客互联的哪位大哥那篇文章帮了我一把,说有时候得加上那一句,具体什么作用不太清楚,但是却是搞定了
然后开始转把,速度很快的
目前还在继续测试参数中,哪位高人还有其他参数的可以放上来大家一起学习一下哈
个人水平有限,望高人多多指点。
顺便借此机会求教一下:现在正在研究自动队列转换,目前卡在了如何判断mencoder的状态,是成功还是失败,还是卡住了?谁能帮忙给我个方法获得mencoder的返回值?
还有ffmpeg有没有有代码比较全的编译好的版本啊,本人linux不会,看不到网上的编译方法。。。或者能交我怎么编译一下。请加我qq 35589997 万分感激!!!
第一次处女帖,加上原创,版主是不是给点奖励什么的
在ubuntu下,可以十分简单的安装好mplayer和mencoder,没有安装的时候,按照提示可以输入万能的sudo apt -get ***,就解决问题了。所以用起来很顺手啊~~
我利用mencoder主要干的两个事情就是视频的分割和合并。如果要对视频进行分割,最好提前知道它的总时间长度,而mplayer提供了这个命令。
获得视屏文件相关信息的命令为: mplayer -identify fileName -nosound -vc dummy -vo null
一 我首先对一个avi格式的视频文件进行了分割和合并,视频文件的名字为1.avi。
分割命令为: mencoder fileName -ovc copy -oac copy -o outputFile -ss BeginTime -endpos LastTime
我开始不知道在endpos后面接的参数何意,时间区间到底是[beginTime,lastTime]还是[beginTime, beginTime+lastTime],通过我的实验发现,后一个是正确的,也就说LastTime解释为持续时间。例如50秒的视频文件的分割参数可以为(0:00, 0:20),(0:21,0:20),(0:42,0:18)。ok,接下来一切就顺利了。
合并命令: mencoder file1Name file2Name … filenName -ovc copy -oac copy -o outputFileName
在合并之后,发现合并的副本视频文件的总时间虽然和源文件的一样,但是大小变化了。不过还好,用播放器打开副本视频文件,肉眼基本看不出什么太大的问题。
我的下一个任务就是研究一种视频文件格式,能够创建一个空白的视频文件,要有完整的头部,最重要的就是当播放器打开的时候,有总时间的显示。而且我能够修改这个总时间。
看了下avi的格式,我的天~~自己太愚钝了,所以gg了,想着去看看最流行的flv格式。
好了,下面就是flv格式视频文件的分割和合并了。
二 flv格式视频文件的分割和合并
在flv文件的分割和合并之前,很重要的一件事情就是进行视频格式的转换。视频格式转换命令如下:
mencoder fileName -of lavf -ofps 24 -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -srate 22050 -oac mp3lame -o outputFileName
我开始转换的时候没有加上 -of lavf -ofps 24 -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56导致转换的视频中,里面的视频流和音频流不匹配。
转换好了之后,分割命令为:
mencoder fileName -ovc copy -oac copy -of lavf -lavfopts format=flv -o outputFileName -ss BeginTime -endpos LastTime
合并命令为:
mencoder file1Name file2Name … filenName -ovc copy -oac copy -of lavf -lavfopts format=flv -o outputFileName
虽然能够成功的分割和合并,但是有个重要的问题就是,合并的副本视频文件大小比原来小多了,利用播放器打开视频文件,发现其中有效果模糊的情况,可能是在合并的时候出现了掉帧的情况。这个问题一时还没有想到解决的方法,上网搜了下在windows下可以用copy命令,我搞之,结果failed。后来baidu才知道,原来并不是能用copy合并所有视频文件,只对只有MPG、AVI等可以(万恶的托拉斯!)。目前的问题有两个,搞定flv格式,能够随心建立空的flv文件;第二个就是我要不要把视频文件格式定义为mpg,这样还能用copy命令,就没有效果模糊丢帧的情况了,不过只要我搞定了flv格式的文件,我可以手动的进行文件的合并,这样也是十分可行的方案~
还有:
http://hi.baidu.com/wagcag/blog/item/c1d5608b53b52611c9fc7a08.html
http://xxbin.com/2008m11/flv-for-mencoder/
http://www.cnblogs.com/haibindev/archive/2011/11/07/2238926.html