faac是用来压AAC音轨的,而faad2就是AAC音轨的解码器,liba52是进行AC3支持的
安装前准备编译的环境
yum install -y automake autoconf libtool gcc gcc-c++
1.下载需要的解码器
wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz
wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.0.tar.gz
wget ftp://ftp.videolan.org:21//pub/videolan/x264/snapshots/x264-snapshot-20090107-2245.tar.bz2
wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
wget http://down1.chinaunix.net/distfiles/libdts-0.0.2.tar.gz
2.解压安装
解压
for i in *.tar.gz; do tar -xzvf "$i"; done
for i in *.tar.bz2; do tar -xjvf "$i"; done
安装的参数
a52dec: ./configure –enable-shared=PKGS && make && make install
faac & faad2: ./bootstrap && ./configure && make && make install
xvidcore: cd build/generic; ./configure && make && make install
libx264: ./configure –enable-mp4-output –enable-shared –enable-pthread && make && make install
lame & yasm: ./configure && make && make install
最后下载和安装ffmpeg
我是使用的svn同步比较新的,如果有时不能编译通过,可以考虑不使用最新的,不过要提示一下,就是连接这个网站,被我们国家的防火墙给kill掉了。需要各位自己想法子.
wget http://ffmpeg.org/releases/ffmpeg-0.8.5.tar.bz2">http://ffmpeg.org/releases/ffmpeg-0.8.5.tar.bz2
编译参数
./configure –enable-gpl –enable-postproc –enable-nonfree –enable-postproc –enable-libfaad –enable-swscale –enable-avfilter –enable-pthreads –enable-libxvid –enable-libx264 –enable-libmp3lame –enable-libfaac –disable-ffserver –disable-ffplay
支持rm和rmvb
对rm和rmvb,只有ffmpeg是不行的,还需要下面的mplayer
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
wget http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2
for i in *.tar.bz2; do tar -xjvf "$i"; done
cp -rf essential-20071007/* /usr/local/lib/codecs
cp -rf all-20071007/* /usr/local/lib/codecs
cp -rf essential-amd64-20071007/* /usr/local/lib/codecs
./configure –prefix=/usr/local/mplayer –enable-gui –enable-freetype –codecsdir=/usr/local/lib/codes –win32codecsdir=/usr/local/lib/win32codcs
更新动态链接库
因为是编译器安装的,所以需要让系统可以找到动态链接库
#echo "/usr/local/lib" >> /etc/ld.so.conf
#echo "/usr/lib" >> /etc/ld.so.conf
#ldconfig
到这基本就安装完了
最基本的几个命令(一定要了解的)
显示支持的格式,不过好象加参数时,加其中的会有问题,看来参数和支持的格式是不一样的
$ ffmpeg -formats
显示视频的相关信息,如时长,文件声音和视频格式之类的信息
ffmpeg -i abc.ts
查看可以加什么参数
ffmpeg -h
mplayer获取影片信息
mplayer -identify movie-filename -nosound -vc dummy -vo null
使用ffmpeg从视频中抓图
ffmpeg -i 原视频文件路径 -y -f image2 -ss 8 -t 0.001 -s 图象大小(400×300) 图片存放路径
使用ffmpeg给视频转换成flv
ffmpeg -i 原视频文件路径 -o 目标文件路径 -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=视频码流:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=高:宽 -ofps 12 -srate 22050′)
ffmpeg 00:04:00 -t 00:08:00 -i -vcodec copy -acodec copy aaa.avi
FAQ
1.出现如下提示
-soname,libx264.so.65 -lm -lpthread -lgpac_static -s
/usr/bin/ld: cannot find -lgpac_static
collect2: ld returned 1 exit status
make: *** [libx264.so.65] Error 1
解决方法
yum install zlib-devel
wget http://internap.dl.sourceforge.net/sourceforge/gpac/gpac-0.4.5.tar.gz
wget http://internap.dl.sourceforge.net/sourceforge/gpac/gpac_extra_libs-0.4.5.tar.gz
tar -zxf gpac-0.4.5.tar.gz
tar -zxf gpac_extra_libs-0.4.5.tar.gz
cd gpac_extra_libs
cp -r * ../gpac/extra_lib
cd ../gpac
chmod +x configure
./configure
make lib
make apps
make install-lib
make install
cp bin/gcc/libgpac.so /usr/lib
注意,使用下面的参数出错
–enable-liba52 –enable-liba52bin
查看源码发现中包括了ac3
为了查找方便,把ffmpeg中的参数都列出来
| 参数 | 英文说明 | |
|---|---|---|
| -L | show license | |
| -h | show help | |
| -version | show version | |
| -formats | 显示可以使用的格式,编码,协议 | |
| -f | 强行设置输出格式[fmt] | |
| -i | 输入文件名[filename] | |
| -y | 不询问直接覆盖输出文件 | |
| -map | set input stream mapping,file:stream[:syncfile:syncstream] | |
| -map_meta_da | set meta da | |
| -t | set the recording time[duration] | |
| -fs | set the limit file size[limit_size] | |
| -ss | set the start time offset[time_off] | |
| -itsoffset | set the input ts offset[time_off] | |
| -title | 视频文件标题[string] | |
| -timestamp | set the timestamp[time] | |
| -author | set the author[string] | |
| -copyright | set the copyright[string] | |
| -comment | set the comment[string] | |
| -album | set the album[string] | |
| -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 on | |
| -loop_output | number of times to loop output in formats that support looping (0 loops forever) | |
| -v | control amount of logging[verbose] | |
| -target | specify target file type (”vcd”, “svcd”, “dvd”, “dv”, “dv50″, “pal-vcd”, “ntsc-svcd”, …)[type] | |
| -threads | thread count[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 | |
| 以下是视频相关的命令 | ||
| -vframes | 按所提供的帧数对文件解码(例ffmpeg -i test5.flv -r 15 -s 384*288 -y -vframes 1 photos.flv)[num] | |
| -aframes | set the number of audio frames to record[num] | |
| -dframes | set the number of da | |
| -r | 设置帧速率,每秒多少帧 (Hz value, fraction or abbreviation)[rate] | |
| -s | 设置视频的宽度和高度,格式为320×240,320*240,320:240都可以 | |
| -aspect | set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)[aspect] | |
| -pix_fmt | set pixel format[format] | |
| -croptop | set top crop band size (in pixels)[size] | |
| -cropbottom | “set bottom crop band size (in pixels)[size] | |
| -cropleft | set left crop band size (in pixels)[size] | |
| -cropright | set right crop band size (in pixels)[size] | |
| -padtop | set top pad band size (in pixels)[size] | |
| -padbottom | set bottom pad band size (in pixels)[size] | |
| -padleft | set left pad band size (in pixels)[size] | |
| -padright | set right pad band size (in pixels)[size] | |
| -padcolor | set color of pad bands (Hex 000000 thru FFFFFF)[color] | |
| -intra | use on | |
| -vn | disable video | |
| -vdt | discard threshold[n] | |
| -qscale | use fixed video quantizer scale (VBR)[q] | |
| -qdiff | max difference between the quantizer scale (VBR)[q] | |
| -rc_eq | set rate control equation[equation] | |
| -rc_override | rate control override for specific intervals[override] | |
| -vcodec | force video codec (’copy’ to copy stream)[codec] | |
| -me | set motion estimation method[method] | |
| -me_threshold | motion estimaton threshold | |
| -ps | set packet size in bits[size] | |
| -strict | how strictly to follow the standards[strictness] | |
| -sameq | use same video quality as source (implies VBR) | |
| -pass | select the pass number (1 or 2)[n] | |
| -passlogfile | select two pass log file name[filename] | |
| -deinterlace | deinterlace pictures | |
| -psnr | calculate PSNR of compressed frames | |
| -vstats | dump video coding statistics to file | |
| -vhook | insert video processing module[module] | |
| -intra_matrix | specify intra matrix coeffs[matrix] | |
| -inter_matrix | specify inter matrix coeffs[matrix] | |
| -top | top=1/bottom=0/auto=-1 field first | |
| -dc | intra_dc_precision[precision] | |
| -vtag | force video tag/fourcc[fourcc/tag] | |
| -newvideo | add a new video stream to the current output stream | |
| -qphist | show QP histogram | |
| 以下是音频相关的命令 | ||
| -ab | 声音码流(in kbit/s)[bitrate] | |
| -aq | 声音品质(codec-specific)[quality] | |
| -ar | 声音的采样频率 (in Hz)[rate] | |
| -ac | 设置输出的声道数[channels] | |
| -an | 不输出声音 | |
| -acodec | 设置输入声音的编码格式 (’copy’ to copy stream)[codec] | |
| -atag | force audio tag/fourcc[fourcc/tag] | |
| -vol | change audio volume (256=normal)[volume] | |
| -newaudio | add a new audio stream to the current output stream | |
| -alang | set the ISO 639 language co | |
| 以下是字幕相关的命令 | ||
| -scodec | force subtitle codec (’copy’ to copy stream)[codec] | |
| -newsubtitle | add a new subtitle stream to the current output stream | |
| -slang | set the ISO 639 language co | |
| 以下是不常用的命令 | ||
| -vd | set video grab device[device] | |
| -vc | set video grab channel (DV1394 on | |
| -tvstd | set television standard (NTSC, PAL (SECAM))[standard] | |
| -ad | set audio device[device] | |
| -grab | request grabbing using[format] | |
| -gd | set grab device[device] | |
| -muxdelay | set the maximum demux-decode delay[sec] | |
| -muxpreload | set the initial demux-decode delay[sec] | |
| -absf | ||
| -vbsf | ||
| -default | generic catch all option | |
(ffmpeg参数说明):
| 【参数】 | 【说明】 | 【示例】 |
| -i "路径" | 指定需要转换的文件路径 | -i "C:\nba.wmv" |
| -y | 覆盖输出文件,即如果nba.xxx文件已经存在的话,直接覆盖 | |
| 控制画面参数 | ||
| -bitexac | 使用标准比特率 | |
| -vcodec xvid | 使用xvid压缩 | |
| -s <宽高比> | 指定分辨率大小 | -s 320*240 |
| -r <数值> | 帧速率(非标准数值会导致音画不同步【标准值为15或29.97】) | -r 15 |
| -b <比特率> | 指定压缩比特率 | -b 1500 |
|
-qmin <数值> | 设定最小质量 | -qmin 10 |
| -qmax <数值> | 与-qmin相反,可以与-qmin同时使用 | -qmax 30 |
| -sameq | 使用与源视频相同的质量 | |
| 控制声音参数 | ||
| -acodec aac | 设定声音编码 | |
| -ac <数值> | 设定声道数:1为单声道,2为立体声 | -ac 2 |
| -ar <采样率> | 设定声音采样率(8000,11025,22050) | -ar 22050 |
| -ab <比特率> | 设定声音比特率(-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96) | -ab 96 |
| -vol <百分比> | 设定音量大小,比如设定200就会比原来的音量大2倍 | -vol 200 |
本文提供了一套详细的音视频编解码流程,包括安装解码器、配置环境、安装FFmpeg及MPlayer,以及常用命令介绍与FAQ解答。重点介绍了FFmpeg的参数使用方法,涵盖视频、音频、字幕等多个方面,帮助开发者高效处理多媒体文件。
1722

被折叠的 条评论
为什么被折叠?



