ffmpeg和mencoder是进行视频转换和视频抽帧的重要开源工具,支持linux和windows环境下的视频转换和视频抽帧操作。本文章记录在linux这两者工具的安装过程。ffmpeg集成视频编码/解码,视频抽帧、视频流采集、视频录制综合的开源视频解决方案。ffmpeg基于linux开发,但是可以很好的在主流的操作系统上运行

FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码.TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg

  • 下载mencoder、ffmpeg

http://www.ffmpeg.org/download.html
              http://www.mplayerhq.hu/design7/dload.html

  • linux安装

1、ffmepg编译参数选项

--help                 显示此帮助信息|print this message
            --log[=FILE|yes|no]     记录测试并输出到config.err文件|log tests and output to FILE [config.err]
            --prefix=PREFIX    安装程序到指定目录(默认/usr/local)|install in PREFIX [/usr/local]
            --libdir=DIR        安装库到指定目录(默认prefix/lib)|install libs in DIR [PREFIX/lib]
            --shlibdir=DIR  指定共享库路径(默认prefix/lib)|install shared libs in DIR [PREFIX/lib]
            --incdir=DIR       指定includes路径(默认prefix/include/ffmpeg)|install includes in DIR[PREFIX/include/ffmpeg]
            --mandir=DIR      指定man page路径(默认prefix/man)install man page in DIR [PREFIX/man]
            --enable-mp3lame   启用mp3编码libmp3lame(默认关闭)enable MP3 encoding via libmp3lame[default=no]
            --enable-libogg 启用ogg支持libogg(默认关闭)enable Ogg support via libogg [default=no] --enable-vorbis      启用Vorbis支持libvorbis(默认关闭)enable Vorbis support via libvorbis [default=no]
            --enable-faad       启用faad支持libfaad(默认关闭)enable FAAD support via libfaad [default=no]
            --enable-faadbin    启用faad运行时链接支持(默认关闭)build FAAD support with runtime linking[default=no]
            --enable-faac 启用faac支持libfaac(默认关闭)enable FAAC support via libfaac [default=no]
            --enable-libgsm     启用GSM支持libgsm(默认关闭)enable GSM support via libgsm [default=no]
            --enable-xvid       启用xvid支持xvidcore(默认关闭)enable XviD support via xvidcore [default=no]
            --enable-x264 启用H.264编码(默认关闭)enable H.264 encoding via x264 [default=no]
            --enable-mingw32   启用MinGW本地/交叉win环境编译|enable MinGW native/cross Windows compile
            --enable-mingwce    启用MinGW本地/交叉winCE环境编译enable MinGW native/cross WinCE compile
            --enable-a52        启用A52支持(默认关闭)enable GPLed A52 support [default=no]
            --enable-a52bin     启用运行时打开liba52.so.0(默认关闭)open liba52.so.0 at runtime [default=no]
            --enable-dts        启用DTS支持(默认关闭)enable GPLed DTS support [default=no]
            --enable-pp         启用后加工支持(默认关闭)enable GPLed postprocessing support [default=no]
            --enable-static      构建静态库(默认启用)build static libraries [default=yes]
            --disable-static     禁止构建静态库(默认关闭)do not build static libraries [default=no]
            --enable-shared     构建共享库(默认关闭)build shared libraries [default=no]
            --disable-shared    禁止构建共享库(默认启用)do not build shared libraries [default=yes]
            --enable-amr_nb    启用amr_nb float音频编解码器|enable amr_nb float audio codec
            --enable-amr_nb-fixed   启用fixed amr_nb codec | use fixed point for amr-nb codec
            --enable-amr_wb   启用amr_wb float音频编解码器|enable amr_wb float audio codec
            --enable-amr_if2     启用amr_wb IF2音频编解码器|enable amr_wb IF2 audio codec
            --enable-sunmlib     启用Sun medialib(默认关闭)| use Sun medialib [default=no]
            --enable-pthreads    启用pthreads(多线程)(默认关闭)use pthreads [default=no]
            --enable-dc1394      启用libdc1394、libraw1394抓取IIDC-1394(默认关闭)enable IIDC-1394 grabbing using libdc1394 and libraw1394 [default=no]
            --enable-swscaler    启用计数器支持?(默认关闭)software scaler support [default=no]
            --enable-avisynth    允许读取AVISynth脚本本件(默认关闭)allow reading AVISynth script files [default=no]
            --enable-gpl       允许使用GPL(默认关闭)allow use of GPL code,the resulting libav* and ffmpeg will be under GPL [default=no] Advanced options (experts only): 高级选项参数(供专业人员使用)
            --source-path=PATH        源码的路径(当前为/root/flv/ffmpeg)| path to source code [/root/flv/ffmpeg]
            --cross-prefix=PREFIX 为编译工具指定路径| use PREFIX for compilation tools []
            --cross-compile          假定使用了交叉编译| assume a cross-compiler is used
            --cc=CC                指定使用何种C编译器(默认gcc)use C compiler CC [gcc]
            --make=MAKE          使用特定的make | use specified make [make]
            --extra-cflags=ECFLAGS   添加ECFLAGS到CFLAGS | add ECFLAGS to CFLAGS []
            --extra-ldflags=ELDFLAGS 添加ELDFLAGS到LDFLAGS(默认-Wl,
            --as-needed)| add ELDFLAGS to LDFLAGS [ -Wl,
            --as-needed]
            --extra-libs=ELIBS       添加ELIBS | add ELIBS []
            --build-suffix=SUFFIX    为专用程序添加后缀suffix for application specific build []
            --arch=ARCH             选择机器架构(默认x86)select architecture [x86]
            --cpu=CPU               选用最低的cpu(影响指令的选择,可以在老CPU上出错)| selects the minimum cpu required (affects instruction selection,may crash on older CPUs)
            --powerpc-perf-enable    启用PPC上面的性能报告(需要启用PMC)enable performance report on PPC (requires enabling PMC)
            --disable-mmx          禁用MMX | disable MMX usage
            --disable-armv5te       禁用armv5te | disable armv5te usage
            --disable-iwmmxt       禁用iwmmxt | disable iwmmxt usage
            --disable-altivec        禁用AltiVec | disable AltiVec usage
            --disable-audio-oss     禁用OSS音频支持(默认启用)disable OSS audio support [default=no]
            --disable-audio-beos     禁用BeOS音频支持(默认启用)disable BeOS audio support [default=no]

  • ffmpeg 安装

第一步:安装yasm/nasm编译器

            wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
make clean

第二步:安装依赖lib

1、lame

2、libogg

3、libvorbis

4、xvidcore

5、x264

6、libdca

7、a52dec

8、faac

9、amrwb

10、amrnb

11、yasm

12、opencore-amr

13、vo-amrwbenc

14、vo-aacenc

15、essential

16、faad2

17、libtheora

18、libraw1394

19、libdc1394

20、fribidi

21、freeType

22、fonconfig

23、libass

24、openssl

25、librtmp

26、libspeex

27、twolame

28、libopus

29、libvpx

30、libvo-amrwbenc

31、libsoxr

32、libschroedinger

33、libopencore-amrnb

34、libopencore-amrwb

35、gnutls

36、frei0r

37、fontconfig

安装faac到时候,报错,修改mpeg4ip.h文件,删除大搞126行,可以通过,
            第三步:安装ffmpeg

    ./configure
        --prefix=/usr/local/ffmpeg
        --enable-gpl
        --enable-version3
        --enable-nonfree configure
        --enable-zlib
        --enable-bzlib
        --enable-libfaac
        --enable-libmp3lame
        --enable-libtheora
        --enable-libvo-aacenc
        --enable-libvorbis
        --enable-libx264
        --enable-libxvid
        --enable-pic
        --enable-pthreads
        --enable-libdc1394
        --enable-libass
        --enable-pic
        --enable-openssl
        --enable-libtwolame
        --enable-libspeex
        --enable-librtmp
        --enable-libfreetype
        --enable-mp3lame
        --enable-libgsm
        --enable-memalign-hack
        --enable-libogg
        --enable-libamr-nb
        --enable-libamr-wb
        --enable-liba52
        --enable-liba52bin
        --enable-libfaad
        --enable-libfaadbin
        --enable-pp
     --enable-libopus
        --enable-libvpx
     --enable-libvo-amrwbenc
     --enable-libsoxr
     --enable-libschroedinger
        --enable-libopencore-amrnb
        --enable-libopencore-amrwb
     --enable-gnutls
     --enable-frei0r
     --enable-fontconfig
        --disable-ffserver
        --disable-ffplay
        --enable-shared make
make install
make clean

第四步:配置环境变量

            vi /etc/profile
export FFMPEG_HOME=/usr/local/ffmpeg/
export PATH=$PATH:$FFMPEG_HOME/bin
:wq

第五步:测试是否安装成功

             ffmpeg –version

第六步:安装mencoder

1、安装过程中完成后执行mencoder命令出现以下错误提示

           mencoder: error while loading shared libraries: libdca.so.0: cannot open shared object file: No such file or directory

需要设置环境变量LD_LIBRARY_PATH和LD_RUN_PATH,由于mencoder安装的目录为/usr/local/bin和依赖库为/usrllocal/lib,因此如下设置

           #set default LD_RUN_PATH and LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib
export LD_RUN_PATH=/usr/local/bin
export PATH=$PATH:$LD_RUN_PATH
export CLASSPATH=$CLASSPATH:$LD_LIBRARY_PATH
  • ffmpeg参数选项

1、通用选项

-L license
            -h 帮助
            -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 激活高质量设置
            -itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了offset秒。[-]hh:mm:ss[.xxx]的格式也支持

2、视频选项
            -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 size 设置顶部切除带大小像素单位
            -cropbottom size –cropleft size –cropright size -padtop size 设置顶部补齐的大小像素单位
            -padbottom size –padleft size –padright size –padcolor color 设置补齐条颜色 (hex,6个16进制的数,红:绿:兰排列,比如000000代表黑色)
            -vn 不做视频记录
            -bt tolerance 设置视频码率容忍度kbit/s
            -maxrate bitrate设置最大视频码率容忍度
            -minrate bitreate 设置最小视频码率容忍度
            -bufsize size 设置码率控制缓冲区大小
            -vcodec codec 强制使用
            codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。
            -sameq 使用同样视频质量作为源(VBR)
            -pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
            -passlogfile file 选择两遍的纪录文件名为file

高级视频选项
            -g gop_size 设置图像组大小
            -intra 仅适用帧内编码
            -qscale q 使用固定的视频量化标度(VBR)
            -qmin q 最小视频量化标度(VBR)
            -qmax q 最大视频量化标度(VBR)
            -qdiff q 量化标度间最大偏差(VBR)
            -qblur blur 视频量化标度柔化(VBR)
            -qcomp compression 视频量化标度压缩(VBR)
            -rc_init_cplx complexity 一遍编码的初始复杂度
            -b_qfactor factor 在p和b帧间的qp因子
            -i_qfactor factor 在p和i帧间的qp因子
            -b_qoffset offset 在p和b帧间的qp偏差
            -i_qoffset offset 在p和i帧间的qp偏差
            -rc_eq equation 设置码率控制方程默认tex^qComp
            -rc_override override 特定间隔下的速率控制重载
            -me method 设置运动估计的方法可用方法有zero phods log x1 epzs(缺省) full
            -dct_algo algo 设置dct的算法可用的有0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
            -idct_algo algo 设置idct算法。可用的有0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
            -er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
            -ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
            -bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
            -mbd mode 宏块决策0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
            -4mv 使用4个运动矢量仅用于mpeg4
            -part 使用数据划分仅用于mpeg4
            -bug param 绕过没有被自动监测到编码器的问题
            -strict strictness 跟标准的严格性
            -aic 使能高级帧内编码h263
            -umv 使能无限运动矢量h263
            -deinterlace 不采用交织方法
            -interlace 强迫交织法编码.仅对mpeg2和mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是不交织,但是损失更大
            -psnr 计算压缩帧的psnr
            -vstats 输出视频编码统计到vstats_hhmmss.log
            -vhook module 插入视频处理模块module 包括了模块名和参数,用空格分开

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

4、音频/视频捕获选项
            -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 H264各种清晰程度对应的码率

针对H.264,这里有一些常用的码率方案:
            1、画面尺寸1920x1080(真正高清),选择码率为7,000-8,000Kbps。

2、画面尺寸1280x720(通用高清),选择码率为5,000-6,000Kbps。

3、画面尺寸640x480(标清),选择码率为1,000-2,000Kbps。

4、画面尺寸320x240(网络传输),选择码率为300-500Kbps。
            5、画面尺寸176x144(3G),10-15fps的内容选择码率为50-60Kbps,24-30fps的内容选择码率为150-200Kbps

  • mencoder 查看系统的音频编码器和视频编码器
      mencoder -ovc help
  • ffmpeg视频转换

1、ffmpeg实现3pg的格式转换

         ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144  -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 

         ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp

2、压制H264编码的视频文件

         ffmpeg -threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 24   -bt 256k -refs 1 -coder 0 -me umh -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30   -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2 OUTPUT
  • ffmpeg实现视频抽帧

1、 截取一张300x200尺寸大小的格式为jpg的一张图片:

         ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg  

要截取指定时间的图片,如5秒之后的:

          ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg

其中,-ss后的单位为秒,也可写成:-ss 00:00:05。

2、 把视频的前30帧转换为一个动态的gif图。需要说明的是,转换成功之后,如果用ffplay播放是看不出效果的,建议换成其他图片播放器播放。其转换命令为:

         ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif 

也可以从视频中的第10秒开始截取后面的5秒内容转换为一个无限重播的动态gif图。其命令为:

         ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif 

上面两种动态gif都是只播一次,想让其一直播,可再加一个参数:-loop_output 0

  • ffmpeg实现image和video互换

1、多张图片转换成视频

          ffmpeg -f image2 -i image%d.jpg video.mpg 

2、视频转换为多张图片

          ffmpeg -i video.mpg image%d.jpg 

支持图片格式PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.

  • ffmpeg实现录制视频/音频

ffmpeg只能在linux平台上实现视频/音频的录制。

1、ffmpeg屏幕录制ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi

         ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg 

其他相关参数可自行添加。需要说明的是,各个版本的ffmpeg对屏幕录制的命令不一。如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。
注:ffmpeg的屏幕录制功能只能在Linux环境下有效。并且在配置时需要添加 –enable-x11grub 指令,默认关闭。

        ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi 

其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中
如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。

2、ffmpeg视频采集 
                 把摄像头的实时视频录制下来,存储为文件

        ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0  test.asf

3、ffmepg音频采集,其命令为:

        ffmpeg –i /dev/dsp -f oss test.mp3
  • mencoder中文手册

这是中文手册地址:http://www.mplayerhq.hu/DOCS/HTML/zh_CN/intro.html

  • mencoder命令操作
mencoder "E:\temp file\MVI_FF.wmv" -o null -oac mp3lame -lameopts cbr:br=32 -ovc x264 -x264encopts bitrate=600 mp4
转码后找到得到文件,但无法播放
"E:\Program Files\MPlayer\mencoder.exe" -oac mp3lame -lameopts aq=7:cbr:br=96 -srate 32000 -vf scale=720:480,harddup -ovc x264 -ffourcc H264 -x264encopts bitrate=320 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\temp\MVI_FFmp4.mp4" "E:\Program Files\MPlayer\mencoder.exe" -nosound -vf harddup -ovc x264 -ffourcc H264 -x264encopts bitrate=320:pass=1 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\MVI_FFmp4.mp4" "E:\Program Files\MPlayer\mencoder.exe" -oac mp3lame -lameopts aq=7:cbr:br=96 -srate 32000 -vf harddup -ovc x264 -ffourcc H264 -x264encopts bitrate=320:pass=2 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\temp\MVI_FFmp4.mp4" mencoder -oac mp3lame -lameopts aq=7:cbr:br=96 -srate 32000 -vf harddup -ovc x264 -ffourcc H264 -x264encopts bitrate=320:pass=2 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\temp\MVI_FFmp4.mp4" mencoder -oac mp3lame -lameopts aq=7:cbr:br=96 -srate 32000 -vf harddup -ovc x264 -x264encopts bitrate=320:pass=2 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\temp\MVI_FFmp4.mp4" scale=448:-3 mencoder.exe -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf harddup -ovc x264 -ffourcc H264 -x264encopts crf=8 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\MVI_FFmp4.mp4" mencoder.exe -oac mp3lame -lameopts aq=7:cbr:br=96 -srate 32000 -vf harddup -ovc x264 -x264encopts bitrate=320 -of lavf -lavfopts format=mp4 "E:\temp file\MVI_FF.wmv" -o "E:\temp file\MVI_FFmp4.mp4" mplayer -ss 00:01:23 -vo gif "E:\temp file\MVI_FF.wmv" mplayer -vo jpeg MVI_FF.wmv mplayer $s -vf screenshot MVI_FF.wmv mplayer -ss 00:00:26 -demuxer lavf -vf screenshot -vo jpeg -lavdopts skiploopfilter=all:skipframe=nonkey -nosound -frames 1 MVI_FF.wmv mencoder MVI_FF.wmv -o output.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 mplayer MVI_FF.wmv -dumpvideo -dumpfile narnia.h264 mencoder MVI_FF.wmv -of lavf -oac mp3lame mpeg=4:object=2:raw:br=32 -srate 22050 -ovc x264 -x264encopts global_header:cabac=1:ref=3:deblock=1:me=umh:frameref=5:mixed_refs=1:me_range=32:chroma_me=1: trellis=1:8x8dct:no-chroma-me=0:chroma_qp_offset=-2:nr=0:dct_decimate=1:bframes=4:b_pyramid=0: b_adapt=1:b_bias=0:direct=auto:keyint=250:keyint_min=25:scenecut=40:qp=18:bitrate=256:subq=7: threads=auto -lavdopts er=2 -lavfopts format=mp4 -sws 3 -vf harddup,scale=480:-3 -ofps 24 -idx -o MVI_FF.mp4 mencoder MVI_FF.wmv -o MVI_FF1.mp4 -vf dsize=480:360:2,scale=-8:-8,harddup -oac faac -faacopts mpeg=4:object=2:raw:br=128 -of lavf -lavfopts format=mp4 -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:bitrate=512:threads=auto:turbo=1:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh mencoder MVI_FF.wmv -oac copy -ovc x264 -x264encopts bitrate=400:level_idc=3.1 -o 2.avi mencoder MVI_FF.wmv -o 2.mp4 -ovc x264 -x264encopts crf=28:vbv_maxrate=1500:nocabac:global_header:frameref=3:threads=auto:bframes=0:subq=6:mixed-refs=0:weightb=0:8x8dct=1:me=umh:partitions=all:qp_step=4:qcomp=0.7:trellis=1:direct_pred=auto -oac mp3lame -lameopts aq=7:cbr:br=96
  • 安装错误解决

1、freeType安装时make出现下面错误

      /usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `.text’ can not be used when making a shared object; recompile with -fPIC

make失败原因是libbz2安装有问题,解决方法为

      vi Makefile
在文件中找到
CC=gcc
修改为
CC=gcc -fPIC
保存文件并重新安装bz2库
make clean
make && make install
make clean

2、freeType安装错误二

      configure: error: Package requirements (freetype2 >= 9.10.3) were not met:
No package 'freetype2' found
<span style="font-size:16px;">Package requirements (freetype2 >= 9.10.3) were not met</span>

解决方法:设置环境变量

     export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

3、lib2xml安装过程中出现错误

     used when making a shared object; recompile with -fPIC
    /usr/local/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    make[4]: *** [libxml2mod.la] 错误 1
    make[4]: Leaving directory `/home/zouqf/ffmpeg-soft/libxml2-2.9.2/python'
    make[3]: *** [all-recursive] 错误 1
    make[3]: Leaving directory `/home/zouqf/ffmpeg-soft/libxml2-2.9.2/python'
    make[2]: *** [all] 错误 2
    make[2]: Leaving directory `/home/zouqf/ffmpeg-soft/libxml2-2.9.2/python'
    make[1]: *** [all-recursive] 错误 1
    make[1]: Leaving directory `/home/zouqf/ffmpeg-soft/libxml2-2.9.2'
    make: *** [all] 错误 2

解决方法

第一步安装最新的python

第二步设置使用--with-pythod参数,因为编译过程中依赖python环境

    ./configure  --with-python=/usr/local/lib/python2.7

4、安装libass错误

        ass_shaper.c:29:19: 错误:hb-ft.h:没有那个文件或目录
        ass_shaper.c: 在函数‘get_hb_font’中:
        ass_shaper.c:377: 错误:隐式声明函数‘hb_ft_font_create’
        ass_shaper.c:377: 警告:赋值时将整数赋给指针,未作类型转换
        make[2]: *** [ass_shaper.lo] 错误 1
        make[2]: Leaving directory `/home/zouqf/ffmpeg-soft/libass-0.12.0/libass'
        make[1]: *** [all-recursive] 错误 1
        make[1]: Leaving directory `/home/zouqf/ffmpeg-soft/libass-0.12.0'
        make: *** [all] 错误 2

解决方法

        cp /home/zouqf/ffmpeg-soft/harfbuzz-0.9.36/src/hb-ft.h /home/zouqf/ffmpeg-soft/libass-0.12.0/libass/hb-ft.h

5、错误一

       ERROR: speex not found using pkg-config

       If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.

这种情况解决步骤如下:

a)设定pkg-config环境变量

         export PKG_CONFIG_PATH=/usr/local/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig

b) 确认speex.pc文件存在于以上路径的其中一个

c)如果以上确认无误情况下,重新configure仍然无法通过,需要查看./config.log日志文件,里面有详细的说明错误原因,下面错误二便是其中一种。

6、错误二

        gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/usr/local/include -I/usr/include/freetype2 -I/usr/local/include/fribidi -I/usr/local/include/freetype2 -I/usr/local/include/freetype2 -I/usr/local/include -I/usr/local/include -I/usr/local/include -L/usr/local/lib -c -o /tmp/ffconf.T9MVHrqS.o /tmp/ffconf.vVfcurs1.c
gcc -Wl,--as-needed -Wl,-z,noexecstack -I/usr/local/include -L/usr/local/lib -o /tmp/ffconf.gGMUfN37 /tmp/ffconf.T9MVHrqS.o -lspeex -lspeex -L/usr/local/lib -L/usr/local/lib64 -lrtmp -lz -lssl -lcrypto -lmp3lame -L/usr/local/lib -lfreetype -lfaac -L/usr/local/lib -lass -lm -lz -pthread -lrt
/usr/bin/ld: cannot find -lspeex
collect2: ld returned 1 exit status

这个原因是speex 安装版本与需要的版本不一致,我安装的时候是speex-1.2rc3,实际编译需要的版本是speex-1.2rc1,因此重新安装speex-1.2rc1,并把speex-1.2rc3/include/speex拷贝到/usr/local/include中,否则会提示文件找不到。

7、错误三

        libavcodec/libxvid.c: In function ‘xvid_encode_init’:
        libavcodec/libxvid.c:371: error: ‘xvid_plugin_lumimasking_t’ undeclared (first use in this function)
        libavcodec/libxvid.c:371: error: (Each undeclared identifier is reported only once
        libavcodec/libxvid.c:371: error: for each function it appears in.)
        libavcodec/libxvid.c:371: error: expected ‘;’ before ‘masking_l’
        libavcodec/libxvid.c:372: error: expected ‘;’ before ‘masking_v’
        libavcodec/libxvid.c:373: error: ‘xvid_plugin_ssim_t’ undeclared (first use in this function)
        libavcodec/libxvid.c:373: error: expected ‘;’ before ‘ssim’
        libavcodec/libxvid.c:374: warning: ISO C90 forbids mixed declarations and code
        libavcodec/libxvid.c:548: error: ‘masking_l’ undeclared (first use in this function)
        libavcodec/libxvid.c:560: error: ‘masking_v’ undeclared (first use in this function)
        libavcodec/libxvid.c:573: error: ‘xvid_plugin_ssim’ undeclared (first use in this function)
        libavcodec/libxvid.c:574: error: ‘ssim’ undeclared (first use in this function)
        make: *** [libavcodec/libxvid.o] Error 1

xvidcore版本过低,需要xvidcore-1.3.3编译通过

  • 参考资料

http://www.cnblogs.com/wanghetao/p/3386311.html
        http://blog.csdn.net/luka2008/article/details/38561891
        http://blog.csdn.net/lzj1980/article/details/2561763
        http://blog.csdn.net/ok7758521ok/article/details/1677662
        http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html
        http://blog.csdn.net/jimzhai/article/details/7853005
        http://blog.csdn.net/bbplayers/article/details/7006047
        http://wenku.baidu.com/view/1e2f4bb669dc5022aaea00de.html
        http://blog.sina.com.cn/s/blog_71f389090100vub5.html
        http://wenku.baidu.com/view/76daf5699b6648d7c1c7461d.html
        http://wenku.baidu.com/view/7987cd2abd64783e09122b2d.html?re=view
        http://wenku.baidu.com/view/bfc0580cba1aa8114431d913.html
        http://wenku.baidu.com/view/7d3467ee998fcc22bcd10d1f.html
        http://jjhhappy.blog.sohu.com/177769500.html

http://blog.chinaunix.net/uid-23069658-id-4018842.html

http://blog.chinaunix.net/uid-23069658-id-4028681.html

linux 下ffmpeg和mencoder安装的更多相关文章

  1. Linux下ffmpeg的完整安装

    最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用 ...

  2. Linux下ffmpeg安装与开发配置

    Linux下ffmpeg安装与开发配置   1. ffmpeg安装 安装环境: ubuntu 12.04 (1)删除已安装的文件,避免冲突 sudo apt-get remove ffmpeg x26 ...

  3. Linux下FFmpeg的安装编译过程【转】

    本文转载自:http://www.linuxidc.com/Linux/2013-06/85628.htm 详细说下在Linux下FFmpeg的安装编译过程.参考 Ubuntu 10.04安装编译FF ...

  4. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  5. Linux下的网络远程安装

    Linux下的网络远程安装 1.用RHEL6.5光盘安装第一台服务器 2.在第一台服务器上配置YUM服务器 先创建一个挂载 #mount #umount /dev/cdrom #mkdir /mnt/ ...

  6. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  7. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  8. linux下.run文件的安装与卸载

    linux下.run文件的安装与卸载   .run文件的安装很简单,只需要为该文件增加可执行属性,即可执行安装 以 virtualbox 的安装文件 virtualbox-3.1.6-59338-Li ...

  9. Linux下rar unrar的安装

    Linux下rar unrar的安装: 以3.8.0版本为例,如果是64位平台,执行以下命令,也可以去官方网站:)下载最新版: wget http://www.rarlab.com/rar/rarli ...

随机推荐

  1. 【BZOJ 2693】jzptab(莫比乌斯+分块)

    2693: jzptab Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample I ...

  2. CAS单点登录配置[1]:准备工作

    关于CAS是什么这里就不在赘述,网友将它比喻成旅游景点的套票,买了一个套票就可以观看所有景点,不需要一个景点买一次票...我们重点介绍CAS单点登录的配置. 工具/原料 1.配置好JDK环境,否则不方 ...

  3. WEB 开发异常:java.lang.ClassNotFoundException

    某个类明明是有的,可是eclipse 启动tomcat服务器运行web项目,出现如题异常. java.lang.ClassNotFoundException 信息: Set web app root ...

  4. Web API路由与动作(三)

    本章包括三个小节  如果你输入了mvc的路由规则 这个可以粗略过一遍即可  内容说明有点繁琐 原文地址:http://www.asp.net/web-api/overview/web-api-rout ...

  5. 使用ListView时遇到的问题

    这周练习ListView时遇到了一个问题,从数据库中查询出的数据绑定到LIstView上,长按某个item进行删除操作,每次点击item取得的id都不对,调了半天终于找到了原因,关键是自己对自定义的B ...

  6. VS2013 ASP.NET MVC 修改Web项目的IISExpress的端口固定

    [首先]关闭防火墙,或防火墙开放端口  在解决方案中,右键某项目,属性——Web——服务器——选择IISExpress URL输入:http://localhost:8000/   直接将8000更改 ...

  7. 计数方法,博弈论(扫描线,树形SG):HDU 5299 Circles Game

    There are n circles on a infinitely large table.With every two circle, either one contains another o ...

  8. List 三种遍历的方法

    学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码如下: package ...

  9. 排序 O(nlogn)

    1. 堆排序是一种优秀的排序算法,时间复杂度O(nlogn),主要思想是用数组构造一个最大堆,满足跟节点的value>子节点的value,然后将堆顶元素(value最大)与最后一个叶子节点交换, ...

  10. HDU-1391 Number Steps

    http://acm.hdu.edu.cn/showproblem.php?pid=1391 Number Steps Time Limit: 2000/1000 MS (Java/Others)   ...