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/bashNDK=/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/localbuild_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/bashNDK=/Users/weifengxu/android/tool/android-sdk-macosx/ndk-bundle#NDK= 改成自己的NDK路径export PATH=$PATH:$NDKSYSROOT=$NDK/platforms/android-15/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64function 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=armPREFIX=/usr/localADDI_CFLAGS="-marm -mfpu=neon"build_one
终端切换到ffmepeg根目录下执行如下命令
获取超级用户权限
sudo -s
输入密码即可
sudo chmod +x build_android.sh
./build_android.sh
运行10分钟左右后编译完成
切换到 /usr/local目录下
编译成功!
/usr/local/include 和/usr/local/lib文件内容就是捆绑了 h264的ffmpeg
更多相关文章
- 【爬坑记录】ncnn移植到Android上出现的编译问题
- Android之Fragment学习(四)
- Android工程打包(含React Native工程)
- Android(安卓)Studio(AS)-->drawable与mipmap (官网解释)
- Android(安卓)FFmpeg在Windows上编译的版本和注意事项
- 基于 Android(安卓)NDK
- Android遇到的错误记录
- android 模拟器,创建sdcard 但是却是只读的,没办法修改属性
- 【Android(安卓)Studio 学习】—— day 01