网上很多例子,但是试了很多都没有都没有弄好,最后经过长时间的试错,终于弄好了,放到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

更多相关文章

  1. 【爬坑记录】ncnn移植到Android上出现的编译问题
  2. Android之Fragment学习(四)
  3. Android工程打包(含React Native工程)
  4. Android(安卓)Studio(AS)-->drawable与mipmap (官网解释)
  5. Android(安卓)FFmpeg在Windows上编译的版本和注意事项
  6. 基于 Android(安卓)NDK
  7. Android遇到的错误记录
  8. android 模拟器,创建sdcard 但是却是只读的,没办法修改属性
  9. 【Android(安卓)Studio 学习】—— day 01

随机推荐

  1. Appium Android(安卓)Bootstrap源码分析
  2. Android(安卓)从相册中选择照片并返回
  3. android 通过setalpha设置透明度 无效及3
  4. Developer分析Android新平台Honeycomb的
  5. 学无止尽
  6. Android(安卓)HandlerThread 的使用及其D
  7. android绝对布局
  8. Android中Context的详细使用
  9. apk的优化方案-1
  10. Android(安卓)2.2 r1 API 中文文档系列(12