用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
来源:互联网 发布:学堂在线 知乎 编辑:程序博客网 时间:2024/05/19 20:22
转载请注明出处 http://www.mingjianhua.com
本文参照 http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ 在linux下的编译,在MAC下也差不多,只需做一点点小改动,在LINUX下也可以参考。最好不要在windows下用cygwin,各种错误会搞得各种烦燥。
1、下载NDK,到 http://developer.android.com/tools/sdk/ndk/index.html#download 下载最新的NDKr9,选择Mac下的NDKr9版本,一般你的系统都是64bit的,选64bit的版本下载。查看你的系统版本可以在终端里输入 uname -a 查询
下载完,只要找个地方解压就好了,后面我们用$NDK代替解压后的全路径。
2、下载最新的ffmpeg http://www.ffmpeg.org/download.html
目前最新的release版是2.0.1.
下载后,解压到$NDK/sources文件夹下。
3、更新configure文件
打开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)'
改这个的目的是因为ffmpeg编译时的结果默认是libavcodec.so.<version> 这样的格式
这个在android下是不认的,成以我们要改成以上这样的代码。
3、复制以下代码,在ffmpeg目录下建立build_android.sh文件
#!/bin/bash
NDK=$HOME/NDK
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64 #这里要注意,如果是linux换成linux-x86_64,看你的系统情况定
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--disable-everything \
--enable-decoder=h264 \ #要什么解码器或编码器看着办
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
做完后就可以开始编译了
在终端上运行:
sudo chmod +x build_android.sh
./build_android.sh
接下来就等编完了,完了后,可以在ffmpeg/android下发现一个arm文件夹,里面有lib和include两个目录,lib里就有你想要的.so文件了。
具体怎么用这个.so,这里有个例 子,https://github.com/roman10/android-ffmpeg-tutorial
最后,祝你们好运。编译(ffmpeg2.0.2)也一样的,没什么区别
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- 用NDKr9编译最新ffmpeg2.0.1到android平台
- 用NDKr9编译最新ffmpeg2.0.1到android平台
- 用NDKr9编译最新ffmpeg2.0.1到android平台
- 编译最新ffmpeg2.0.1到iOS设备
- ffmpeg2
- android ndk r9 移植 live555 ffmpeg2.0 sdl2.0.1最新库整合编译
- Android NDK 编译移植FFmpeg2.5
- xcode5编译FFmpeg2.0.2的编译问题
- ffmpeg2.0如何编译
- ffmpeg2.5编译方法
- linux编译ffmpeg2.6.2
- linux编译ffmpeg2.8.4
- linux编译ffmpeg2.8.4
- ffmpeg结构体及函数
- linux驱动开发-系统调用
- MTK平台修改默认时间,以及恢复出厂设置后的默认时间显示
- 反向代理负载均衡的实现及开放的反向代理软件的使用方法
- n,没vhjm的国际化的风格
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解
- 使用pthread_cond_timedwait()超时时间设置问题
- ubuntu添加系统调用
- 17周 oj 比较大小 类模板
- java异常处理之throw, throws,try和catch
- 3343: 教主的魔法
- 【翻译】Javascript最佳实践
- ASE如何直接访问文件和直接生成文件