交叉编绎opencv之ffmpeg编绎

        闲话不说,直接上代码!

1、编绎环境

宿主机:ubuntu12.04 x64 3.5.0-44-generic
交叉编绎器:arm-linux-gcc 4.6.2
目标平台:FreeScale I.MAX6 4核1.2G

2、准备工作

              下载以下源码:

ffmpeg-1.0.1.tar.bz2

lame-3.99.5.tar.gz

last_x264.tar.bz2

SDL-1.2.15.tar.gz

xvidcore-1.3.2.tar.bz2

3、开始编绎

将下载源码包放到/opt/EmbedSky/freescale/E9/document/ffmpeg目录下,下面开始编绎过程。
1、设置编绎用到的环境变量 
lkp@lkp-desktop:/opt/EmbedSky/freescale/E9/document$ cd /opt/EmbedSky/freescale/E9/document/ffmpeg
lkp@lkp-desktop:/opt/EmbedSky/freescale/E9/document/ffmpeg$ export ffmpeg_install=$PWD/__install
lkp@lkp-desktop:/opt/EmbedSky/freescale/E9/document/ffmpeg$ echo $ffmpeg_install
/opt/EmbedSky/freescale/E9/document/ffmpeg/__install
lkp@lkp-desktop:/opt/EmbedSky/freescale/E9/document/ffmpeg$ 
设置编绎后的安装目录
2、编译支持264格式解码的库
tar jxvf last_x264.tar.bz2 -C ./
cd x264-snapshot-20121205-2245/
CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-gcc RANLIB=arm-linux-ranlib STRIP=arm-linux-strip  ./configure --enable-shared --host=arm-linux --disable-asm --prefix=$ffmpeg_install
make
make install
完成编绎和安装
3、编译支持libxvid库
cd /opt/EmbedSky/freescale/E9/document/ffmpeg
tar jxvf xvidcore-1.3.2.tar.bz2 -C ./
cd xvidcore/build/generic/
./configure --prefix=$ffmpeg_install --host=arm-linux  --disable-assembly
make
make install
4、编译支持mp3的libmp3lame库
cd /opt/EmbedSky/freescale/E9/document/ffmpeg/
tar zxvf lame-3.99.5.tar.gz -C ./
cd lame-3.99.5/
./configure CC=arm-linux-gcc --host=arm-linux --target=linux --disable-shared --prefix=$ffmpeg_install
make
make install
5、编译SDL库(生成ffplay需要SDL支持)
cd /opt/EmbedSky/freescale/E9/document/ffmpeg/
 tar zxvf SDL-1.2.15.tar.gz -C ./
cd SDL-1.2.15/
./configure --prefix=$ffmpeg_install --enable-shared --host=arm-linux CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib --disable-arts --disable-nasm --disable-video-x11 --disable-nas --disable-joystick --disable-cdrom
make
make install
6、编译ffmpeg
这一步是最容易出错的地方,以下红色部分需要格外注意。
/opt/EmbedSky/freescale/E9/document/ffmpeg/__install/lib目录中生成的库拷贝到/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/default/lib目录下
/opt/EmbedSky/freescale/E9/document/ffmpeg/__install/include目录中生成的头文件拷贝到/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/include目录下
/opt/EmbedSky/freescale/E9/document/ffmpeg/__install/bin目录中生成的可执行程序拷贝到/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/bin/目录下
cd /opt/EmbedSky/freescale/E9/document/ffmpeg
tar jxvf ffmpeg-1.0.1.tar.bz2 -C ./
cd ffmpeg-1.0.1/
./configure --prefix=$ffmpeg_install --enable-shared --enable-libmp3lame --enable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale --cross-prefix=/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/bin/
make
make install
到此ffmpeg已经编绎完成!
将生成的库和可执行程序拷贝到E9文件系统中的/opt/PDA/目录下,就可以播放视频和音频了。

4、常见问题

1、配置时出现错误
ERROR: libmp3lame >= 3.98.3 not found
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
solving the problem.
这是在配置的时候选项中加入了--enable-libmp3lame选项(来支持mp3),然而配置时却找不到libmp3lame的库。通过咨询天嵌售后支持,建议将libmp3lame的库和头文件放到交叉编译器对应目录去。于是按照建议,复制相关库和头文件到编译器目录下,重新配置,OK通过。
2、顺利编译完成,但没生成ffplay可执行文件
这是由于SDL没加入到编译中去。要生成ffplay,配置的时候,这个选项是必须的:--cross-prefix=/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/bin/,并把前面编译SDL生成的bin下面的sdl-config,拷贝到/opt/EmbedSky/toolchains/gcc-4.6.2/tq-linaro-toolchain/arm-fsl-linux-gnueabi/bin/这个目录下。做完这个,编译完成就可生成ffplay了。


ffmpeg编绎到此结束,下一篇介绍opencv的交叉编绎,敬请期待!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值