ffmpeg+speex+x264+libilbc交叉编译大杂烩

1.环境

操作系统suse10

ffmpeg版本ffmpeg-1.0.1

speex版本speex-1.2rc1

x264和libilbc是官方最新的版本

andriod NDK版本android-ndk-r8b

 

2.编译

由于编译的ffmpeg依赖于其他三个,所以编译ffmpeg之前要把speex和x264,ilbc编译先

 

2.1编译ilbc

到官网下载libilbc.rar

解压libilbc.rar

cd 到解压目录

编写脚本:

#/sh/bin

#NDK路径,这个自行根据安装环境修改
NDK=/home/android-ndk-r8b
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/
# 系统库目录
PLATFORM=$NDK/platforms/android-8/arch-arm/
# 编译的安装目录,自行修改
PREFIX=/home/chenjianjun/call_libray/android-ffmpeg


export CC="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc"
export LDFLAGS="--sysroot=$NDK/platforms/android-8/arch-arm/ -L$NDK/platforms/android-8/arch-arm/usr/lib"
export CFLAGS="--sysroot=$NDK/platforms/android-8/arch-arm/"
export AR="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ar"
export PATH=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH


./configure --prefix=$PREFIX --host=arm-linux --enable-shared=no 


sed -i "s/\$echo/\$ECHO/g" libtool

 

make & make install

 

保存脚本

运行脚本

 

3.编译x264

 

到官网下载x264.rar

解压x264.rar

cd 到解压目录

编写脚本:

#/sh/bin


NDK=/home/android-ndk-r8b
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/
# 系统库目录
PLATFORM=$NDK/platforms/android-8/arch-arm/
# 编译的目录目录
PREFIX=/home/chenjianjun/call_libray/android-ffmpeg


./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM

make & make install

 

 

保存脚本

运行脚本

 

4.编译speex

 

下载speex-1.2rc1.tar.gz

解压speex-1.2rc1.tar.gz

cd到解压目录

编写脚本:

#/sh/bin


NDK=/home/android-ndk-r8b
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/
# 系统库目录
PLATFORM=$NDK/platforms/android-8/arch-arm/
# 编译的目录目录
PREFIX=/home/chenjianjun/call_libray/android-ffmpeg


export CC="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc"
export LDFLAGS="--sysroot=$NDK/platforms/android-8/arch-arm/ -L$NDK/platforms/android-8/arch-arm/usr/lib"
export CFLAGS="--sysroot=$NDK/platforms/android-8/arch-arm/"
export AR="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ar"
export PATH=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH


./configure --prefix=$PREFIX --host=arm-linux --target=arm-linux --enable-shared=no && cd ./libspeex && make && sudo make install

 

 

 

保存脚本

运行脚本

 

如果编译成功,需要把解压目录下的include里面的内容拷贝到/home/chenjianjun/call_libray/android-ffmpeg/include下面,不知道什么原因,安装speex的时候没有把头文件

安装到指定目录下

 

5.以上编译成功才可以编译ffmpeg

 

下载ffmpeg-1.0.1.zip

解压ffmpeg-1.0.1.zip

cd到解压目录

编写脚本:

#!/bin/bash


NDK=/home/android-ndk-r8b
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/
# 系统库目录
PLATFORM=$NDK/platforms/android-8/arch-arm/
# 编译的目录目录
PREFIX=/home/chenjianjun/call_libray/android-ffmpeg


function build_one
{
./configure --target-os=linux --prefix=$PREFIX \
--arch=arm \
--cc=$PREBUILT/linux-x86/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--nm=$PREBUILT/linux-x86/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--disable-doc \
--disable-everything \
--disable-stripping \
--disable-asm \
--disable-ffplay \
--disable-ffserver \
--disable-ffmpeg \
--disable-ffprobe \
--disable-devices \
--disable-avdevice \
--enable-cross-compile \
--enable-runtime-cpudetect \
--enable-nonfree \
--enable-version3 \
--enable-static \
--enable-gpl \
--enable-avresample \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-libx264 \
--enable-libspeex \
--enable-libilbc \
--enable-encoder=libilbc \
--enable-decoder=libilbc \
--enable-encoder=libspeex \
--enable-decoder=libspeex \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-protocol=rtp \
--enable-hwaccels \
--enable-zlib \
--extra-cflags="-I$PREFIX/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="-L$PREFIX/lib" \
--extra-libs="-L$PREFIX/lib"


make -j4 install
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libpostproc/libpostproc.a libswresample/libswresample.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 -lspeex -lilbc --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
build_one

 

保存脚本,运行脚本

不出意外OK了:

 

微信打赏
微信打赏

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值