2024年1月3日发(作者:)

LINUX下编译ffmpeg-x264

1 版本:

X264.r663,ffmpeg.r9453

2 yasm

2.1 下载yasm新版本

要安裝x264,就需要用yasm來編譯。那就先裝個yasm吧。yasm下載網址:

/projects/yasm/releases/

2.2 编译安装

#tar xzvf

#cd yasm-0.6.0

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

#make

#make install

3 x264

3.1 编译

3.1.1 编译静态库

svn co svn:///x264/trunk x264

cd x264

./configure --prefix=/static

make

make install//可不执行,手工来

3.1.2 编译动态库

svn co svn:///x264/trunk x264

cd x264

patch -p0 <

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

make

make install//可不执行,手工来

3.2 安装

由于一般ffmpeg采用静态连接x264,所以只需要编译安装x264静态库

#cp libx264.a /usr/lib

#cp x264.h /usr/include

4 ffmpeg

4.1 下载

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

cvs -z9 -d:pserver:anonymous@:/cvsroot/ffmpeg co ffmpeg。

现在已改成SVN下载:

svn:///ffmpeg

4.2 编译安装

#./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --enable-pthreads

#make

#make install

make install结果:

1) 头文件:/usr/local/include/ffmpeg

-rw-r--r-- 1 root root 5180 7月 3 17:18 swscale.h

-rw-r--r-- 1 root root 3053 7月 3 17:18 rtsp.h

-rw-r--r-- 1 root root 1712 7月 3 17:18 rtspcodes.h

-rw-r--r-- 1 root root 3797 7月 3 17:18 rtp.h

-rw-r--r-- 1 root root 7647 7月 3 17:18 rgb2rgb.h

-rw-r--r-- 1 root root 3062 7月 3 17:18 rational.h

-rw-r--r-- 1 root root 2408 7月 3 17:18 random.h

-rw-r--r-- 1 root root 3087 7月 3 17:18 opt.h

-rw-r--r-- 1 root root 2044 7月 3 17:18 mem.h

-rw-r--r-- 1 root root 1174 7月 3 17:18 md5.h

-rw-r--r-- 1 root root 1767 7月 3 17:18 mathematics.h

-rw-r--r-- 1 root root 1132 7月 3 17:18 lzo.h

-rw-r--r-- 1 root root 3599 7月 3 17:18 log.h

-rw-r--r-- 1 root root 1302 7月 3 17:18 intfloat_readwrite.h

-rw-r--r-- 1 root root 2343 7月 3 17:18 integer.h

-rw-r--r-- 1 root root 2943 7月 3 17:18 fifo.h

-rw-r--r-- 1 root root 9315 7月 3 17:18 common.h

-rw-r--r-- 1 root root 1223 7月 3 17:18 base64.h

-rw-r--r-- 1 root root 6020 7月 3 17:18 avutil.h

-rw-r--r-- 1 root root 2494 7月 3 17:18 avstring.h

-rw-r--r-- 1 root root 9406 7月 3 17:18 avio.h

-rw-r--r-- 1 root root 31796 7月 3 17:18 avformat.h

-rw-r--r-- 1 root root 95102 7月 3 17:18 avcodec.h

-rw-r--r-- 1 root root 993 7月 3 17:18 adler32.h

2)库文件:/usr/local/lib

drwxr-xr-x 2 root root 4096 7月 3 17:18 vhook

drwxr-xr-x 2 root root 4096 7月 3 17:18 pkgconfig

-rwxr-xr-x 1 root root 29412 7月 3 17:18 .49.4.1

lrwxrwxrwx 1 root root 19 7月 3 17:18 .49 -> .49.4.1

lrwxrwxrwx 1 root root 19 7月 3 17:18 -> .49.4.1

-rwxr-xr-x 1 root root 557856 7月 3 17:18 .51.12.1

lrwxrwxrwx 1 root root 22 7月 3 17:18 .51 -> .51.12.1

lrwxrwxrwx 1 root root 22 7月 3 17:18 -> .51.12.1

-rwxr-xr-x 1 root root 4105568 7月 3 17:18 .51.40.4

lrwxrwxrwx 1 root root 21 7月 3 17:18 .51 -> .51.40.4

lrwxrwxrwx 1 root root 21 7月 3 17:18 -> .51.40.4

4.3 合并libavcodec和libavutil

1) 新建一个目录make_my

2) 拷贝需要的.o文件

a)

b)

c)

d)

#cp ffmpeg/libavcodec/*.o make_my

#mkdir make_my/i386

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

#cp ffmpeg/libavutil/*.o make_my

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

gcc -shared -Wl,-soname,.51 -pthread -rdynamic -export-dynamic -Wl,--warn-common -Wl,--as-needed

-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavcodec

-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavformat

-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -o .51 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 dxa.o 8bps.o ffv1.o huffyuv.o flac.o

flacenc.o flashsv.o flashsvenc.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 png.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o qtrleenc.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 zmbv.o zmbvenc.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 pthread.o

i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o tree.o string.o rational.o

random.o mem.o md5.o mathematics.o lzo.o log.o lls.o intfloat_readwrite.o fifo.o crc.o base64.o aes.o adler32.o

-L"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -lavutil -lm -lz -lx264 -ldl

5 问题

1)configure时提示“bad interpreter”

答:vi configure然后:set ff=unix

答:chmod +x filename

2) configure时提示“某文件权限问题”