redhat as4下的ffmpeg和mencoder安装过程

redhat as4 下的 ffmpeg mencoder 安装过程
2008年5月22日的安装过程记录,修正了网上安装过程的bug
主要参考网址:
这两个软件的安装配置是实现视频网站(flv转码、截图)的关键技术,由于涉及到很多编码库,网上的安装方法都不全面或存在错误,以下是我实验找出的正确安装方法:
安装apache的runtime模块apr和apr-util,这样才能安装svn:
http://apr.apache.org/
先装apr,再装apr-util的时候要用 --with-apr=apr源码路径
安装subversion,这样才能装接下来的软件。
wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=apr的源码路径 --with-apr-util=apr-util的源码路径
svn是一个类似cvs的版本管理工具,主要用来从服务器上获取源代码。如果已经有以下软件则不必装svn
subversion 编译时 也可以不必安装apr
安装faad2包:
http://www.audiocoding.com/modules/mydownloads/
解压后如果configure出错,需要如下修改
echo > plugins/Makefile.am
echo > plugins/xmms/src/Makefile.am
sed -i '/E_B/d' configure.in
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
安装faac:
下载地址同上,如果bootstrap出错,需要如下修改(因为Unix格式问题)
sed -i 's//r//' bootstrap
sed -i 's//r//' configure.in
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
安装mp3lame:
http://lame.sourceforge.net/download.php
./configure --enable-shared --prefix=/usr
make
make install
安装xvid,ffmpeg貌似带了的,实际是个wrap
wget http://downloads.xvid.org/downloads/xvidcore-1.1.0.tar.gz
tar zvxf xvidcore-1.1.0.tar.gz
cd xvidcore-1.1.0/build/generic
./configure --prefix=/usr
make
make install
安装x264
svn co svn://svn.videolan.org/x264/trunk x264
./configure --prefix=/usr --enable-shared
make
make install
安装liba52:
./configure --prefix=/usr --enable-shared
make
make install
http://download.chinaunix.net/download/0006000/5785.shtml
./configure --prefix=/usr --enable-shared
make
make install
3gp 支持 : 在编译 ffmpeg 加入 --enable-amr_nb --enable-amr_wb 的时候 , 会有提示 , 下载 :http://www.3gpp.org/ftp/Sp..., 解压的源代码文件以后把里面的文件都拷贝到 ffmpeg 的源代码目录下 libavcodec/amrwb_float; 然后下载 :http://www.3gpp.org/ftp/Sp..., 解压得源代码文件以后把里面的文件都拷贝到 ffmpeg 解包目录下的 libavcodec/amr_float, 然后交给 ffmpeg 编译去做了 .
也可以在这里下载这两个包 :amrwb_float下载,amr_float下载.
在编译时要加上相应的选项
这个我没有测试通过
最新的办法:
3GP 影片的影像是 h263 編碼,而聲音就用 AMR-NB AMR-WB 編碼,所以要轉換手機影片,就要安裝 AMR 程式庫。最初坊間的安裝方式都是到 3GPP 官網去下載那些連名字也搞不懂的檔案來,放在 ffmpeg 裡的指定目錄去跟 ffmpeg 一同編譯的,但現在已經有人抽取了出來而成為獨立的程式庫,安裝起來就簡單得多了。
下载一个新的 amr-nb,amr-wb , 是库文件 , 不是源码 .
amr-wb:http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.1.tar.bz2
amr-nb:http://ftp.penguin.cz/pub/users/utx/amr/amrnb-6.1.0.4.tar.bz2

libamrnb
#tar xjvf amrnb-6.1.0.3.tar.bz2
#cd amrnb-6.1.0.3
#./configure --prefix=/usr --enable-shared
#make
#make install
libamrwb
#tar xjvf amrwb-7.0.0.0.tar.bz2
#cd amrwb-7.0.0.0
#./configure --prefix=/usr --enable-shared
#make
#make install
都装齐了就可以编译ffmpeg:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
基于2008年5月22日星期四下载 的svn版本 SVN-r13233
./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin--enable-pthreads --enable-nonfree
./configure --prefix= /opt/ffmpeg --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libxvid --enable-liba52 --enable-liba52bin--enable-pp --enable-libfaad --enable-libfaadbin --enable-libfaac --enable-libx264 --enable-pthreads --disable-ffserver --disable-ffplay
注意:
错误libavformat.so.51: cannot open shared object file的解决方法,
如果没有装在、usr(--prefix=/usr),此错误一般都会出现
> >>Error: h1124192:~/src/ffmpeg_20061208# ffmpeg
> >>ffmpeg: error while loading shared libraries: 
> >>libavformat.so.51: cannot
> >>open shared object file: No such file or directory
> >>
 
#ldconfig -v 
查看libs文件的位置,发现没有包括/opt/ffmpeg/lib
#vi /etc/ld.so.conf
加入/opt/ffmpeg/lib就是你安装ffmpeg lib的位置
 
 
使用的时候很方便,一般来说:
ffmpeg -i 源文件 -o 目标文件 [-codec 编码方式] [-b 码率]就可以了,码率默认200k,编码默认为目标扩展名类型。
下面安装mplayer/mencoder:
注意如果编译安装图像界面需要装Xwindows和gnome开发库,要不通不过编译
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
tar xjvf MPlayer-1.0rc2.tar.bz2
cd MPlayer-1.0rc2
./configure --prefix=/usr/local --enable-gui --enable-largefiles --enable-gif --enable-png --enable-jpeg --language=zh_CN --codecsdir=/usr/lib/codecs/
make
make install
安装mencoder需要的codecs:
http://www1.mplayerhq.hu/MPlayer/releases/codecs/
安装到usr/local/lib/codecs
安装Helix DNA Producer
https://helix-producer.helixcommunity.org/downloads
转flv的参数:
mencoder zhou.rm -o ps2.flv -of lavf -oac mp3lame -lameopts abr:br=32:mode=3 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2
由于producer for Linux只认识uncompress的视频文件,所以转rm要先中转:
mencoder ps2.mpeg -ovc raw -oac pcm -o ps2.avi
producer -i ps2.avi -o ps2.rm
对于 ffmpeg,可以将除swf,rmvb,wmav9以外的视频/音频格式转换成flv/mp3,同时可以截取这些视频文件中的某个时间的该帧图片.这些实际上就是一个视频播客显示的部分.对于mencoder,支持各种常见格式的视频/音频转换成flv/mp3.或者转换成avi.
1)ffmpeg篇:
ffmpeg的命令行参数因为太多,这里不列出,可以用ffpmeg -h可以查看到.列出非高级参数如下:

引用
Main options:
-L show license
-h show help
-version show version
-formats show available formats, codecs, protocols, ...
-f fmt force format
-i filename input file name
-y overwrite output files
-t duration set the recording time
-fs limit_size set the limit file size
-ss time_off set the start time offset
-itsoffset time_off set the input ts offset
-title string set the title
-timestamp time set the timestamp
-author string set the author
-copyright string set the copyright
-comment string set the comment
-album string set the album
-v verbose control amount of logging
-target type specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)
-dframes number set the number of data frames to record
-scodec codec force subtitle codec ('copy' to copy stream)
-newsubtitle add a new subtitle stream to the current output stream
-slang code set the ISO 639 language code (3 letters) of the current subtitle stream

Video options:
-vframes number set the number of video frames to record
-r rate set frame rate (Hz value, fraction or abbreviation)
-s size set frame size (WxH or abbreviation)
-aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-croptop size set top crop band size (in pixels)
-cropbottom size set bottom crop band size (in pixels)
-cropleft size set left crop band size (in pixels)
-cropright size set right crop band size (in pixels)
-padtop size set top pad band size (in pixels)
-padbottom size set bottom pad band size (in pixels)
-padleft size set left pad band size (in pixels)
-padright size set right pad band size (in pixels)
-padcolor color set color of pad bands (Hex 000000 thru FFFFFF)
-vn disable video
-vcodec codec force video codec ('copy' to copy stream)
-sameq use same video quality as source (implies VBR)
-pass n select the pass number (1 or 2)
-passlogfile file select two pass log file name
-newvideo add a new video stream to the current output stream

Subtitle options:
-scodec codec force subtitle codec ('copy' to copy stream)
-newsubtitle add a new subtitle stream to the current output stream
-slang code set the ISO 639 language code (3 letters) of the current subtitle stream

Audio/Video grab options:
-vd device set video grab device
-vc channel set video grab channel (DV1394 only)
-tvstd standard set television standard (NTSC, PAL (SECAM))
-ad device set audio device
-grab format request grabbing using
-gd device set grab device

Advanced options:
-map file :stream[:syncfile :syncstream] set input stream mapping
-map_meta_data outfile :infile set meta data information of outfile from infile
-benchmark add timings for benchmarking
-dump dump each input packet
-hex when dumping packets, also dump the payload
-re read input at native frame rate
-loop_input loop (current only works with images)
-loop_output number of times to loop output in formats that support looping (0 loops forever)
-threads count thread count
-vsync video sync method
-async audio sync method
-vglobal video global header storage type
-copyts copy timestamps
-shortest finish encoding within shortest input
-dts_delta_threshold timestamp discontinuity delta threshold
-ps size set packet size in bits
-muxdelay seconds set the maximum demux-decode delay
-muxpreload seconds set the initial demux-decode delay


如果这些都明白了 ,并且有编程基础,你就可以去参与ffmpeg开发了.其实这些堆积起来的命令95%一般是用不上的.这里介绍一些简单的常见的命令:
-fromats 显示可用的格式
-f fmt 强迫采用格式fmt
-I filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持(截图需要)
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
-title string 设置标题
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-target type 设置目标文件类型(vcd,svcd,dvd),所有的格式选项(比特率,编解码以及缓冲区大小)自动设置,只需要输入如下的就可以了:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 激活高质量设置

-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频,缺省25
-s size 设置帧大小,格式为WXH,缺省160X128.下面的简写也可以直接使用:Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-croptop/botton/left/right size 设置顶部切除带大小,像素单位
-padtop/botton/left/right size 设置顶部补齐的大小,像素单位
-padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:蓝排列,比如 000000代表黑色)
-vn 不做视频记录
-bt tolerance 设置视频码率容忍度kbit/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式. 如果用copy表示原始编解码数据必须被拷贝.(很重要)

-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道,缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码

-vd device 设置视频捕获设备,比如/dev/video0
-vc channel 设置视频捕获通道 DV1394专用
-tvstd standard 设置电视标准 NTSC PAL(SECAM)
-dv1394 设置DV1394捕获
-av device 设置音频设备 比如/dev/dsp

-map file :stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法 用于编解码测试
-ps size 设置包大小,以bits为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流。只工作于图像流,用于ffserver测试


ffmpeg进行操作的常用方法 :

1.转换成flv文件:ffmpeg -i infile.* -y (-ss second_offset -ar ar -ab ab -r vr -b vb -s vsize) outfile.flv
其中second_offset是从开始的多好秒钟.可以支持**:**:**格式,至于ar,ab是音频的参数,可以指定ar= 22050,24000,44100(PAL制式),48000(NTSC制式),后两种常见,ab=56(视音频协议的codec而定,如果要听高品质,则80以上).vr,vb,vsize是视频参数,可以指定vr=15,25(PAL),29(NTSC),vb=200,500,800,1500 (视视频协议的codec而定,可以通过查看专业的codec说明文档获取
还有一些参数 -acodec ac -vcodec vc(ac指定音频codec,ar和ab可以省去,vc指定视频codec,vr和vb可以省去,自动采用相应的codec参数)
还有很多高级参数,如-qmin,-qcale等,请查看详细文档.
还有-an和-vn参数,分别从多媒体文件中提取出纯粹视频和音频.
另,如果你是用shell批量处理,请使用-y参数覆盖生成flv.

2.截取图片:ffmpeg -i infile.* -y (-ss second_offset) -t 0.001 -s msize (-f image_fmt) outfile.jpg
其中second_offset同上,msize同vsize,图片大小.image_fmt=image2强制使用jpg,image_fmt=gif,强制使用gif格式.
还可以用-vframes fn指定截取某帧图片,fn=1,2,3,...
2)mencoder篇:
mencoder的作用主要在视频转码方面.在安装完mplayer后,mencoder也编译生成了.可以man mencoder获取mencoder的说明文档.
mencoder的参数更加复杂,不过也无非是音频处理视频处理两个方面,可以参看网络例子: http://www.masoncn.com/pos...这里不作详细的列举了.

mencoder进行操作的常用方法: mencoder infile.* -o outfile.* [-ovc 目标视频格式] [-oac 目标音频格式] [-of 目标文件格式]

1.转换成flv文件: mencoder infile.* -o outfile.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050

2.转换成avi文件: mencoder infile.* -o outfile.avi -of avi -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600

3.转换成wmv文件(复杂写法,其中高级参数可以省去): mencoder infile.* -o outfile.wmv -of lavf -ofps 25 -oac mp3lame -lameopts cbr:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=320:240 -srate 22050 -sws 9 -subcp cp936 -subpos 0 -subalign 0 -subfont-text-scale 3 -lavfopts i_certify_that_my_video_strea

其中-ovc,-oac和-of是必须的,-ovc是指定视频codec,指定了ovc之后通常带一个该codec的opt参数,-oac是指定音频 codec,也会在其后带一个codec的opt参数.可以指定细节以决定视频音频质量和转换速率.具体的细节可以参看专业的技术文档.



对于第一个问题采用ffmpeg+mencoder可以获取一个让人可以接受的解决办法.第三个问题可以在上传之后安装一个前端过滤程序,区分音频文件和视频文件,已经有相应的开源工具和代码做这些事情.对于第二个问题,首先是统一格式,然后计算音视频文件的hash,在存储部分采用分布式CAS技术存储,应用方面构架在CAS之上.而第四个问题,第五个问题有待深入研究.第六个问题可以考虑p2p的方式,不过这个不是太重要.
多种格式转换成 Flv 及截图
2006-08-25 19:46

3GP转FLV
mencoder-vfscale=320:240-ffourccFLV1-oflavf-lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames-ovclavc-lavcoptsvcodec=flv:vbitrate=200-srate22050-oaclavc-lavcoptsacodec=mp3:abitrate=56ok/1.3gp-ook/3gp.flv
MOV转FLV
mencoder-vfscale=320:240-ffourccFLV1-oflavf-lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames-ovclavc-lavcoptsvcodec=flv:vbitrate=200-srate22050-oaclavc-lavcoptsacodec=mp3:abitrate=56ok/qtime.mov-ook/mov.flv
RMVB转FLV
mencoder-vfscale=320:240-ffourccFLV1-oflavf-lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames-ovclavc-lavcoptsvcodec=flv:vbitrate=200-srate22050-oaclavc-lavcoptsacodec=mp3:abitrate=56ok/1.rmvb-ook/rmvb.flv
WMV转FLV
mencoder-vfscale=320:240-ffourccFLV1-oflavf-lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames-ovclavc-lavcoptsvcodec=flv:vbitrate=200-srate22050-oaclavc-lavcoptsacodec=mp3:abitrate=56ok/m9.wmv-ook/m9.flv
以上的参数通用,只要在输入的ok/m9.wmv换成你自己相应的格式就好
裁图方面:
ffmpeg-iok/3gp.flv-y-fimage2-ss8-t0.001-s320x2403gp.jpg
ffmpeg-iok/mov.flv-y-fimage2-ss8-t0.001-s320x240mov.jpg
ffmpeg-iok/mpeg.flv-y-fimage2-ss8-t0.001-s320x240mpeg.jpg
ffmpeg-iok/mp1.flv-y-fimage2-ss8-t0.001-s320x240mp1.jpg
ffmpeg-iok/mp2.flv-y-fimage2-ss8-t0.001-s320x240mp2.jpg
ffmpeg-iok/rm.flv-y-fimage2-ss8-t0.001-s320x240rm.jpg
ffmpeg-iok/rmvb.flv-y-fimage2-ss8-t0.001-s320x240rmvb.jpg
ffmpeg-iok/rv.flv-y-fimage2-ss8-t0.001-s320x240rv.jpg
ffmpeg-iok/mp4.flv-y-fimage2-ss8-t0.001-s320x240mp4.jpg
ffmpeg-iok/avi.flv-y-fimage2-ss8-t0.001-s320x240avi.jpg
ffmpeg-iok/m7.flv-y-fimage2-ss8-t0.001-s320x240m7.jpg
ffmpeg-iok/m8.flv-y-fimage2-ss8-t0.001-s320x240m8.jpg
ffmpeg-iok/m9.flv-y-fimage2-ss8-t0.001-s320x240m9.jpg
以上转完FLV,有个缺陷,就是FLV播放时不能拖放,要用下面的一个软件来修复。
在服务器上自动转,用命令行的。用这个,
要有用户界面的,手动修复的,用这个。
使用方法:
命令提示符下输入>flvmdiinputFile[outputFile][/s][/x][/e][/k]
给个例子,后面的参数不加也可以修复,比如。
flvmdi.exem7.flv
这样就行了。
修复OK。
FFMPEG下载
Mencoder最新版下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值