ffmpeg交叉编译指南

ffmpeg交叉编译指南

ruihanl@126.com

2014/1/13

 

ffmpeg是一个优秀的编解码开源软件,可以应用在Windows平台和Linux平台上,可以下载静态库或者源代码进行编译,进行二次开发和服务于其他应用程序。

 

1.Windows应用

在Windows中,可以直接使用静态库(也就是一个exe的文件),也可以使用动态链接库。

其中,dev为库形式,static为静态可执行文件,shared为动态连接的可执行文件。

另外,ffmpeg还有C#的应用库,可以很方便的调用。

 

 

2.Linux应用

ffmpeg在Linux下主要对源代码进行编译,获得静态文件或者动态库,再进行开发。

 

2.1.编译环境

Ubuntu 12.12

gcc4.3

 

2.2.编译步骤

总体编译步骤分为以下三步:

0、安装各种必要的库

1、解压缩,配置编译参数。(./configure)

2、编译,安装到指定位置。(make ,make install)

3、运行命令检查。(ffmpeg -h)

 

 

交叉编译x264,得到必要的库。

1、./configure--prefix=./arm --enable-shared --host=arm-linux --disable-asm--cross-prefix=arm-linux-

2、make

3、make install

交叉编译器是从子目录去查找头文件和库的,所以把编译完成后的x264.h和libx264.a拷贝到相应目录。

/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include

/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib

/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/bin

 

交叉编译sdl库

由于不编译sdl,最后编译ffmpeg时就无法生成ffplay

 

./configure --prefix=/home/SDL-1.2.15/arm   --host=arm-linux--target=arm-linux --enable-shared--disable-debug --disable-cdrom --enable-threads --enable-timers--enable-endian --enable-file --enable-oss --enable-video-fbcon --enable-video-directfb  --enable-video-opengl --enable-input-events--enable-pthreads --enable-video-qtopia --enable-dlopen --disable-directx--disable-stdio-redirect

make

makeinstall

复制生成的头文件和库文件到交叉编译器目录。

cp -R./include/SDL /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include

cp./lib/lib* /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib

cp./bin/sdl-config /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/bin

 

交叉编译ffmpeg

1、解压缩,运行配置。(./configure --help可以查看配置选项)配置需要小写。

./configure --prefix=/home/ffmpeg-1.2/arm3 --enable-shared--disable-static --enable-cross-compile --target-os=linux --cc=arm-linux-gcccxx=arm-linux-g++ ar=arm-linux-ar ld=arm-linux-gcc strip=arm-linux-strip--arch=armv4l --enable-gpl --enable-network --enable-pthreads  --disable-armv5te --disable-armv6--disable-armv6t2 --enable-libx264 --enable-armvfp

 

echo"SDL_CFLAFS=-I/vlc/cross/SDL-1.2.13/install/include/SDL -D_GNU_SOURCE=1-D_REENTRANT" >>config.mak

echo"SDL_LIBS=-L/vlc/cross/SDL-1.2.13/install/lib-Wl,-rpath,/vlc/cross/SDL-1.2.13/install/lib -lSDL -lpthread">>config.mak

 

2、编译,使用交叉编译器

make CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-arLD=arm-linux-gcc RANLIB=arm-linux-ranlib STRIP=arm-linux-strip

 

3、安装(由--prefix=/opt/ffmpeg-1.2-arm指定)

makeinstall

注:此时会出现一个小错误,

root@shendan-virtual-machine:/opt/ffmpeg-1.2-arm# make install

INSTALL    libavdevice/libavdevice.a

INSTALL    libavdevice/libavdevice.so

STRIP        install-libavdevice-shared

strip: Unable to recognise the format of the input file`/opt/ffmpeg-1.2-arm/lib/libavdevice.so.54.3.103‘

make: *** [install-libavdevice-shared] 错误 1

打开config.mk,这个文件就是配置和make时产生的,

把STRIP=strip改为arm-linux-strip即可。

重新make install

 

4、这个时候会在你指定的目录下生成bin、lib、include、share等文件,把bin、lib两个文件夹的内容复制到开发板的sbin和lib目录下面就可以运行。

 

5、运行ffmpeg -h检查。

 

 

 

 

 

 

ffmpeg交叉编译指南

上一篇:应用文件映射进行进程间通讯


下一篇:NameNode内存优化---基于缓存相同文件名的方法