mac 平台下编译android版本 ffmpeg+h264

网上很多例子,但是试了很多都没有都没有弄好,最后经过长时间的试错,终于弄好了,放到android 里没有问题。

系统环境:os 10.11.5
ndk r12

1,首先下载ffmpeg 2.5.11 https://ffmpeg.org/解压
2,下载x264 http://download.videolan.org/pub/videolan/x264/snapshots/最新的版本 解压
3,x264编译 修改一下configure文件:
找到libx264.so.$API修改为libx264.so[如不修改,生成的动态库为libx264.so.148,android无法识别]
在x264主目录中新建shell脚本build_android.sh其内容如下


#!/bin/bash


NDK=/Users/weifengxu/android/tool/android-sdk-macosx/ndk-bundle
#NDK= 换成自己的ndk主目录 

SYSROOT=$NDK/platforms/android-15/arch-arm/

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64


 function build_one
 {
 bash  ./configure \
    --prefix=$PREFIX \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --sysroot="$SYSROOT" \
    --host=arm-linux \
    --enable-pic \
    --enable-shared \
    --enable-static \
    --disable-cli
    make
    make install

 }
 CPU=arm
 PREFIX=/usr/local
build_one 

编译的成功与失败关键就在shell脚本上,一点失误就编译不成功
编译开始:在终端输切换到x264主目录后入如下命令:
(1)获取超级用户权限

sudo -s

(2)输入密码即可
(3)sudo chmod +x build_android.sh
(4)./build_android.sh
运行几分钟后编译完成
切换到 /usr/local目录下会看到include 和lib两个文件夹,打开lib会看到libx264.so文件,打开include看到x264.h和x264_config.h,
编译成功!
可能出现问题:/usr/local/lib无libx264.so,而其他文件都存在,没关系,copy x264主文件目录下的libx264.so到/usr/local/lib即可
4,编译ffmpeg
ffmpeg依赖x264,而前面已经吧x264编译好了。
(1)修改configure:
把一下内容

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

改为

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'

这样生成的.so文件末尾不会携带版本信息[.so.123]
(2)在ffmpeg主目录中建立shell脚本:build_android.sh
内容如下:


#!/bin/bash

NDK=/Users/weifengxu/android/tool/android-sdk-macosx/ndk-bundle
#NDK=  改成自己的NDK路径
export PATH=$PATH:$NDK
SYSROOT=$NDK/platforms/android-15/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64


function build_one
{
bash  ./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffserver \
    --enable-cross-compile \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --enable-gpl \
    --enable-libx264 \
    --enable-decoder=h264 \
    --enable-encoder=libx264 \
    --extra-libs=-lgcc \
    --sysroot=$SYSROOT \
    --enable-asm \
    --enable-neon \
    --extra-cflags=-I/usr/local/include \
    --extra-ldflags=-L/usr/local/lib \
    $ADDITIONAL_CONFIGURE_FLAG
    make
    make install
}
CPU=arm
PREFIX=/usr/local
ADDI_CFLAGS="-marm -mfpu=neon"
build_one

终端切换到ffmepeg根目录下执行如下命令
获取超级用户权限

sudo -s

输入密码即可
sudo chmod +x build_android.sh
./build_android.sh
运行10分钟左右后编译完成
切换到 /usr/local目录下mac 平台下编译android版本 ffmpeg+h264_第1张图片
编译成功!
/usr/local/include 和/usr/local/lib文件内容就是捆绑了 h264的ffmpeg

你可能感兴趣的:(androi视频直播)