在ffmpeg中加入x264模块

引言:最近一直致力于多媒体应用开发,一说起编码解码就不得不说下FFmpeg。FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。下面就详细介绍下在Windows操作系统中如何编译并且使用FFmpeg做应用开发。

下载源码

到FFmpeg官方下载最新的FFmpeg版本。CVS服务器地址如下:

cvs -z9 -d:pserver:[email protected]:/cvsroot/ffmpeg co ffmpeg。

现在已改成SVN下载:

svn://svn.mplayerhq.hu/ffmpeg/trunk

编译需要的工具

1)MinGW-5.0.2.exe 

2)MSYS-1.0.11.exe(安装的时候需要注意,将MSYS-1.0.10.exe装到MinGW的bin目录下:我的安装目录为C:/MinGW/bin/1.0),由于新版的ffmpeg需要较高的MSYS,将bash-3.1-MSYS-1.0.11-snapshot.tar.bz2解压,然后将bin的文件拷贝到C:/MinGW/bin/1.0/bin下面

3)如果提示没有yasm,下载yasm-0.6.0.tar.gz,并按下提示安装

/*************yasm begin**************

要安裝x264,就需要用yasm來編譯。那就先裝個yasm吧。

yasm下載網址:http://www.tortall.net/projects/yasm/releases/yasm-0.6.0.tar.gz

#tar xzvf yasm-0.6.0.tar.gz

#cd yasm-0.6.0

#./configure --prefix=/usr/local/yasm

#make

#make install

/*************that is ok here*********************/

#export PATH="$PATH:/usr/local/yasm/bin"

#vi /etc/profile

--[在最後,插入]—

export PATH="$PATH:/usr/local/yasm/bin"

/*************yasm end**************

编译步骤

1、配置

用记事本打开C:/MinGW/bin/MSYS-1.0.10下msys.bat文件。在第一行添加对vcvars32.bat的引用。vcvars32.bat在VC7的bin下面,如下:

call D:/WindowsXP/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat

@echo off

rem Copyright (C):  2001, 2002  Earnie Boyd

rem   mailto:[email protected] ............

2、运行msys.bat,效果如下:

3、编译x264

1)下载x264源码

     地址:svn://svn.videolan.org/x264/trunk
          或svn co svn://svn.videolan.org/x264/trunk x264
 

2)编译x264

编译静态库:

svn co svn://svn.videolan.org/x264/trunk x264

cd x264

./configure --prefix=/static

make

make install

编译动态库

svn co svn://svn.videolan.org/x264/trunk x264

cd x264

patch -p0 < dll.patch

./configure --prefix=/shared --enable-shared

make

make install

如果make install报错,没关系,将x264库文件拷贝过去,如:cp libx264.* /shared/lib/.

4.configure ffmpeg

./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl (--enable-libx264 --enable-gpl:表示支持x264)

注:按照上述步骤,好像有时会提示没有找到x264,经过几翻周折,决定采用最笨的方法:

1)将x264.h文件拷贝到C:/MinGW/include下面

2)将libx264.a,libx264.so,libx264.so.47文件拷贝到C:/MinGW/mingw32/lib

3)./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl

5、make ffmpeg

下面就执行make了。如果没有出现什么错误的话,就再执行make install。

6合并libavcodec和libavutil

1) 新建一个目录make_my

2) 拷贝需要的.o文件

a) #cp ffmpeg/libavcodec/*.o make_my

b) #mkdir make_my/i386

c) #cp ffmpeg/libavcodec/i386/*.o make_my/i386

d) #cp ffmpeg/libavutil/*.o make_my

3) 合并libavcodec和libavutil成一个库(注意路径问题)

gcc -shared -Wl,--output-def,avcodec-51.def,--out-implib,libavcodec.dll.a -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base -Wl, --warn-common -Wl,-rpath-link,"/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavcodec -Wl,-rpath-link, "/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavformat -Wl,-rpath-link, "/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavutil -o libavcodec.dll bitstream.o utils.o allcodecs.o mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o resample.o resample2.o dsputil.o motion_est.o imgconvert.o mpeg12.o simple_idct.o ratecontrol.o eval.o error_resilience.o raw.o faandct.o parser.o rangecoder.o h263.o opt.o bitstream_filter.o audioconvert.o imgresample.o i386/fdct_mmx.o i386/cputest.o i386/dsputil_mmx.o i386/mpegvideo_mmx.o i386/motion_est_mmx.o i386/simple_idct_mmx.o i386/idct_mmx_xvid.o i386/fft_sse.o i386/fft_3dn.o i386/fft_3dn2.o aasc.o ac3enc.o ac3tab.o ac3.o alac.o asv1.o atrac3.o mdct.o fft.o avs.o bethsoftvideo.o bmp.o bmpenc.o c93.o cavs.o cavsdsp.o golomb.o cinepak.o cljr.o cook.o cscd.o cyuv.o dca.o dnxhddec.o dsicinav.o dvbsubdec.o dvbsub.o dvdsubdec.o dvdsubenc.o dv.o 8bps.o ffv1.o huffyuv.o flac.o flacenc.o flicvideo.o 4xm.o fraps.o gifdec.o lzw.o gif.o h261dec.o h261.o h261enc.o h263dec.o h264.o h264idct.o cabac.o idcinvideo.o imc.o indeo2.o indeo3.o interplayvideo.o dpcm.o jpeglsdec.o jpegls.o mjpegdec.o mjpeg.o jpeglsenc.o kmvc.o ljpegenc.o mjpegenc.o loco.o mace.o mjpegbdec.o mmvideo.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o mpegaudioenc.o mpc.o msmpeg4.o msmpeg4data.o msrle.o msvideo1.o lcl.o nuv.o rtjpeg.o pnmenc.o pnm.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o ra144.o ra288.o roqvideodec.o roqvideo.o roqvideoenc.o elbg.o roqaudioenc.o rpza.o rv10.o sgidec.o sgienc.o rle.o shorten.o smacker.o smc.o snow.o sonic.o sp5xdec.o svq1.o targa.o targaenc.o vp3.o xiph.o vp3dsp.o tiertexseqv.o tiff.o tiffenc.o lzwenc.o truemotion1.o truemotion2.o truespeech.o tscc.o tta.o txd.o s3tc.o ulti.o vc1.o vc1data.o vc1dsp.o vcr1.o vmdav.o vmnc.o vorbis_dec.o vorbis.o vorbis_data.o vorbis_enc.o vp5.o vp56.o vp56data.o vp6.o vqavideo.o wavpack.o wmadec.o wma.o wmaenc.o wnv1.o ws-snd1.o xan.o xl.o pcm.o adpcm.o adx.o g726.o libx264.o aac_parser.o aac_ac3_parser.o ac3_parser.o cavs_parser.o dca_parser.o dvbsub_parser.o dvdsub_parser.o h261_parser.o h263_parser.o h264_parser.o mjpeg_parser.o mpeg4video_parser.o mpegaudio_parser.o mpegvideo_parser.o pnm_parser.o vc1_parser.o dump_extradata_bsf.o remove_extradata_bsf.o noise_bsf.o mp3_header_compress_bsf.o mp3_header_decompress_bsf.o mjpega_dump_header_bsf.o imx_dump_header_bsf.o i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o mathematics.o rational.o intfloat_readwrite.o crc.o md5.o lls.o adler32.o log.o mem.o fifo.o tree.o lzo.o random.o aes.o base64.o -L"/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavutil -lavutil -lm -lx264

 

 

 

 

 

 

 

 

 

http://realwnc.spaces.live.com/Blog/cns!77E997FCD9369039!126.entry

你可能感兴趣的:(在ffmpeg中加入x264模块)