1. MP3 支持:Lame
下载地址:http://lame.sourceforge.net/download.php
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/lame-398-2
2.安装
libogg-1.1.3-13.2.i586.rpm
libogg-devel-1.1.3-13.2.i586.rpm
libvorbis-1.1.2-13.2.i586.rpm
libvorbis-devel-1.1.2-13.2.i586.rpm
3. Xvid 支持:xvidcore
下载地址:http://www.xvid.org
cd xvidcore-1.1.3/build/generic && ./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/xvidcore-1.1.3
4. H264/AVC 支持:x264
要压HQ1080、iPod和PSP的影片,x264是少不了的。
安装x264需要先安装yasm http://www.tortall.net/projects/yasm/wiki/Download
下载x264 http://www.videolan.org/developers/x264.html
# 也可以 git clone git://git.videolan.org/x264.git #会下载最新源码到在当前目录下x264
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/x264-snapshot-20081007-2245
5. AC3 支持:liba52
http://liba52.sourceforge.net/
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/a52dec-0.7.4
6. MPEG4 AAC 支持:faac、faad2
faac是用来压AAC音轨的,而faad2就是AAC音轨的解码器。手机铃音和MP4影片都是使用AAC作声音编码.
faad2
下载: http://downloads.sourceforge.net/faac/
tar zxf faad2-2.6.1.tar.gz
autoreconf -vif
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/faad2 –with-mp4v2
faac
下载: http://downloads.sourceforge.net/faac/
tar zxf faac-1.26.tar.gz
./bootstrap && ./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/faac –with-mp4v2
要知道安装了faac和faad2之后有没有安装好libmp4v的话,只要找一找/usr/lib目录里有没有libmp4v2.so等一系列档案就可以了。找不到的话,就到http://resare.com/libmp4v2/dist/去下载,安装好之后再重头安装faac和faad2了。
7. 3GPP AMR Floating point 和 AMR-Wideband支持:libamrnb、libamrwb
3GP影片的影像是h263编码,而声音就用AMR-NB或AMR-WB编码,所以要转换手机影片,就要安装AMR链接库。
下载网址:http://www.penguin.cz/~utx/amr
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/amrnb-7.0.0.2
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/amrwb-7.0.0.3
8. 安装ffmpeg
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/ffmpeg –enable-gpl –enable-shared –enable-libmp3lame –enable-libvorbis –enable-libamr-nb –enable-libamr-wb –enable-libxvid –enable-libx264 –enable-libfaac –enable-libfaad –enable-libfaadbin –enable-pthreads –disable-ffserver –disable-ffplay –enable-nonfree
9. 安装mplayer
## 安装所需的codecs
下载 http://www1.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
解压到/usr/lib/media/all-20071007/
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
#或到http://www.mplayerhq.hu/design7/dload.html下载
./configure –enable-gui –enable-largefiles –codecsdir=/usr/lib/media/all-20071007/
#Error: X11 support required for GUI compilation.错误解决办法,安装xorg-x11-devel-xxxxxx.rpm
#Error: The GUI requires GTK devel packages (which were not found).解决办法是,安装gtk2-devel-xxxxxxx.rpm
使用mencoder和ffmplayer转换各种影片格式到FLV
一.mencoder
mencoder test1.wmv -o test1.lavc-350kbps.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=350:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050
各选项的含义:
-of lavf:是输出文件格式,这里不是flv而是lavf,是因为flv属于libavformat;
-oac oac=output audio codec 编码音频部分。这儿是mp3lame。
-oac mp3lame 音频采用mp3编码
-lameopts abr:br=56:
br是指设置音频比特率为56(比特率:每秒钟输出的音频大小,单位kb/s);
#-lameopts mode=3:cbr:br=32:vol=1,mode=3是音体声,mode=0单声道; vol=1-10控制音量
# -lameopts 顾名思义,即lame选项,这儿只需定义一下码率就可以了。
vbr 设定音频码率的方法
0 cbr average bitrate
1 mt
2 rh constant bitrate Also forces CBR mode encoding on subsequent ABR presets modes.
3 abr
4 mtrh
br 就是设定我们所需要的码率值,格式为br=<0-1024>,只能在vbr为0和3的情况下才能使用该选项。
-ovc lavc #ovc=output video codec ;
-ovc 编码文件的视频部分。主要有以下几个选项
-ovc copy 不进行编码,只是复制视频流
-ovc divx4 编码成DivX4/DivX5
-ovc raw 编码成任意不压缩的格式(用‘-vf format’设定具体的格式)
-ovc lavc 使用libavcodec进行编码
-lavcopts vcodec=flv:vbitrate=350:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1
# 对lavc进行一些设置,vcodec=flv:指定视频编码器为flv
# vbitrate=500:指定视频比特率为500(低品质为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会好点。
-vf scale=512:-3 #5-vf表示视频格式,scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比
-ofps 12 帧速率设置,现为12fps
-srate 22050 声音采样频率设置,现为22K
mencoder(mplayer) 的手册 http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html
二.ffmpeg
高品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile
低品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -b 512 -y outfile
使用h264转Mp4: ffmpeg -y -i b19e7cfa3bdc2ec11fe75ac3923242f8.mpeg -acodec libfaac -ar 22050 -ab 64k -vcodec libx264 -b 250k -s 320×240 -aspect 4:3 b19e7cfa3bdc2ec11fe75ac3923242f8.mp4
新的转FLV: ffmpeg -y -i 1.flv -vcodec ‘flv’ -acodec ‘libmp3lame’ -b 300k -s 320×240 -aspect 4:3 -ac 1 -ab 32k -ar 22050 1-sub.flv
新的转FLV并加水印: ffmpeg -y -i 1.flv -vcodec ‘flv’ -acodec ‘libmp3lame’ -b 300k -s 320×240 -aspect 4:3 -ac 1 -ab 32k -ar 22050 -vhook ‘/usr/lib/vhook/imlib2.so -x 5 -y 5 -i /zhangjianfeng.com/app/vconv/wm1.png’ 1-sub.flv
关于vhook加水印可以参考http://ffmpeg.mplayerhq.hu/hooks.html
ffmpeg -i $dst -y -f image2 -ss 10 -t 0.001 -s 320×240 image1.jpg #截图第10秒并存为image1.jpg
# imagemagick软件包中convert可以对图片进行截剪控制
# convert -scale `echo “$MVWIDTH 320″|awk ‘{print $1/$2*60}’` $SRCLOGO $DSTLOGO
-ab bitrate 设置音频码率
-acodec codec 使用codec编解码
-ac channels 设置通道,缺省为1
-ar freq 设置音频采样率
-r fps 设置帧频,缺省25
-b bitrate 设置比特率,缺省200kb/s
-qscale 6或4 使用动态码率来设置
# 对于音频的ar(采样率)可以指定为22050、24000、44100或48000,一般来将后两种比较常见;对于音频的ab(码率)一般是选择32、 64、96或128这几种;对音频的acodec则是指定编码方式,可以指定为libmp3lame或aac等,这两种分别是指使用mp3和aac格式的音频。
# 对于视频的qscale,属于动态码率,可以设置为4或6,4的质量比6的要高。在测试的过程中我发现设置-b参数对视频的质量并没有过大的改变(指定大指定小都差不多或是一样),而设置qscale则完全不一样,如果我们想获取高品质的话应该使用动态码率而不是指定-b参数,当然了,使用动态码率的坏处就是视频的体积变大了。在使用动态码率的时候使用6的效果和4差不多,但是体积减少了,因此通常建议使用6来设置动态码率。
FFMPEG文档: http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html
++对于rmvb格式,可用先用mencoder转成avi格式的
mencoder 01.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o 01.avi
++要查看你的ffmpeg支持哪些格式,可以用如下命令:
$ ffmpeg -formats | less
++Format Constraints
(秩名) |