用mencoder进行任意视频格式转换成flv


在命令行下输入此行代码:

mencoder file_of_input -o file_of_output -of lavf  -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050

关于命令中的一些参数,解释如下:

-o  是输出文件路径;
 -of lavf:是输出文件格式,这里不是flv而是lavf,是因为flv属于libavformat;

 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames:-lavfopts表示对lavf进行一 些设置,设置的内容就是i_certify_that_my_video_stream_does_not_use_b_frames,翻译成中文就是: 我确定,我的视频不用B frames,对于转换flv格式,最好加上这个参数,否则可能会报错.

-oac mp3lame:oac=output audio codec,输出音频编码器,这里用的mp3lame;

     -lameopts abr:br=56:lame options,是专门针对mp3lame的参数设置,abr:br=56,是设置音频比特率为56(比特率:每秒钟输出的音频大小,单位kb/s);

     -ovc lavc:ovc=output video codec,输出视频编码器,lavc表示one of libavcodec’s video codec,输出格式为libavformat之一,编码器当然也是libavcodec之一啦,至于libavodec里都有哪些编码器,可以查看Mplayer的官方文档;

    -lavcoptsvcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:trell:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1:对lavc进行一些设置,详细介绍如下:

     vcodec=flv:指定视频编码器为flv;

     vbitrate=500:指定视频比特率为500,这个参数很重要,vbitrate大了可以让视频品质增加,但会让文件变的很大(可以参考flash8自带的转换工具的参数:低品质为150kb/s,中等品质为400kb/s,高品质为700kb/s)。

     mbd:宏模块选择算法,值为0~2默认为0,值越大转换越缓慢,但在品质和文件大小方面有好处;

     mv0:编译每个宏模块并选择最好的一个,当mbd=0时无效;

     v4mv:会稍微增加品质,mbd>0时效果更明显;

     trell:量子化网格搜索,对每8×8block找到最优化编码;

     cbp:只能和trell一期使用,评估失真的图像块编码;

     last_pred=3:与上一帧相比的移动数量预测,值为0~99,1~3比较合适,大于3时对品质的提高已经无关紧要,但却会降低速度;

     dia=4:移动搜索范围,值为-99~6,对于快速转换,-1是个不错的值,如果不是很重视速度,可以考虑2~4;

     cmp=6:值为1~2000,默认为0,设置用于全象素移动预算的比较函数

     vb_strategy=1:对动作很大的场景会有帮助,对有些视频,设置vmax_b_frames会有损品质,加上vb_strategy=1会好点。

     以上是对-lavcopts的详细解释,接下来继续说明mencoder的参数:

     -vf scale=512:-3:-vf表示视频格式,scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比,也可以设置为-1或-2,具体表示什么,有兴趣的可以尝试一下。如果要强制转化为统一大小,可以直接写-vf scale=640:480,但笔者个人建议用-3来保持高宽比。-vf里还有expand和crop参数,例如:-vf scale=512:384,expand=512:384:::1,crop=512:384:0:0,expand表示膨胀,crop表示裁剪;

     -ofps 12:输出视频的帧频,一般,用于flash播放的视频帧频高了没有没有意义,反而会增加视频文件大小,但如果ofps设置的不合适,比如源视频帧频不是ofps的整数倍,可能会导致转换后的视频、音频不同步,似乎可以将这一参数改为-noskip来解决这一问题;   

    -srate 22050:音频采样率一般为22050或44100。

    对于转换flv格式,lavsopts的设置比较重要.

 

    摘录: blogger.org.cn/blog/more.asp



你可能感兴趣的:(算法,Blog,Flash,asp,vb)