android ffmpeg 动态库编译
来源:互联网 发布:如何赚钱 知乎 编辑:程序博客网 时间:2024/06/05 20:37
- 环境搭建
- 代码下载
- 配置编译
- 动态库输出
环境搭建
- 配置一个乌班图的Linux虚拟机或者服务器
- 安装好yasm
下载压缩包,配置,编译,安装 - NDK准备和安装
下载链接:
http://developer.android.com/tools/sdk/ndk/index.html
也可参考:http://blog.csdn.net/elesos/article/details/52913259
也可以从网盘中下载:http://pan.baidu.com/s/1i5EEb3Z
下载完成后:
tar -xzvf android-ndk-r14b-linux-x86_64.zip
cd android-ndk-r14b
pwd
/home/xxxxxx/ndk/android-ndk-r14b
代码下载
这里我们从github上引用yixia的项目作为我们编译使用的code,链接如下:
https://github.com/yixia/FFmpeg-Android.git
配置编译
下载完成后,进入工程目录
#cd FFmpeg-Android
# ls
drwxr-xr-x 3 huanyu.ke szsoftware 19 Jul 20 13:13 build
-rw-r–r– 1 huanyu.ke szsoftware 7651 Jul 14 20:15 COPYING.LGPLv3
drwxr-xr-x 18 huanyu.ke szsoftware 4096 Jul 20 11:43 ffmpeg
-rwxr-xr-x 1 huanyu.ke szsoftware 3481 Jul 20 2017 FFmpeg-Android.sh
-rw-r–r– 1 huanyu.ke szsoftware 40 Jul 20 13:13 ffmpeg-version
-rw-r–r– 1 huanyu.ke szsoftware 22840 Jul 14 20:15 FFmpeg-VPlayer.patch
drwxr-xr-x 8 huanyu.ke szsoftware 4096 Jul 20 16:42 .git
-rw-r–r– 1 huanyu.ke szsoftware 0 Jul 14 20:15 .gitignore
-rw-r–r– 1 huanyu.ke szsoftware 2267 Jul 14 20:15 LICENSE
-rw-r–r– 1 huanyu.ke szsoftware 20624 Jul 14 20:15 MAINTAINERS
-rw-r–r– 1 huanyu.ke szsoftware 282 Jul 14 20:16 README.md
给编译脚本FFmpeg-Android.sh 打上patch
#patch -p1 < android-ffmpeg-complise.patch
主要是设置NDK路径,工具链路径。注意SYSROOT,NDK 指定的路径platform要一致,还要添加ccache路径,以及一些警告当错误的flag去掉。
android-ffmpeg-complise.patch的内容如下:
diff --git a/FFmpeg-Android.sh b/FFmpeg-Android.shindex 8aa15c3..a436431 100755--- a/FFmpeg-Android.sh+++ b/FFmpeg-Android.sh@@ -18,26 +18,33 @@ patch -p1 <../FFmpeg-VPlayer.patch git log --pretty=format:%H -1 > ../ffmpeg-version+CCACHE=/home/xxxx.xx/usr/local/bin+ANDROID_NDK=/home/xxxx.xx/ndk/android-ndk-r14b++#notice: The Access permissions for directories TOOLCHAIN=/tmp/vplayer-SYSROOT=$TOOLCHAIN/sysroot/-$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$TOOLCHAIN+SYSROOT=$ANDROID_NDK/platforms/android-23/arch-arm+$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-23 --install-dir=$TOOLCHAIN-export PATH=$TOOLCHAIN/bin:$PATH+export PATH=$TOOLCHAIN/bin:$PATH:$CCACHE export CC="ccache arm-linux-androideabi-gcc" export LD=arm-linux-androideabi-ld export AR=arm-linux-androideabi-ar CFLAGS="-O3 -Wall -mthumb -pipe -fpic -fasm \ -finline-limit=300 -ffast-math \- -fstrict-aliasing -Werror=strict-aliasing \+ -fstrict-aliasing \ -fmodulo-sched -fmodulo-sched-allow-regmoves \ -Wno-psabi -Wa,--noexecstack \ -D__ARM_ARCH_5__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5TE__ \ -DANDROID -DNDEBUG"++# config the flags of the ffmpeg FFMPEG_FLAGS="--target-os=linux \ --arch=arm \ --enable-cross-compile \+ --sysroot=$SYSROOT \ --cross-prefix=arm-linux-androideabi- \ --enable-shared \ --disable-symver \@@ -102,14 +109,21 @@ for version in neon armv7 vfp armv6; do cp config.* $PREFIX [ $PIPESTATUS == 0 ] || exit 1+ ## clean the old file make clean- make -j4 || exit 1+ ## start to compile+ make -j16 || exit 1+ ## start to install the ffmpeg library and the header file make install || exit 1 rm libavcodec/inverse.o++ ## start to package the dynamic library libffmpeg.so $CC -lm -lz -shared --sysroot=$SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $EXTRA_LDFLAGS libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libavfo+ ## output the dynamic library libffmpeg.so cp $PREFIX/libffmpeg.so $PREFIX/libffmpeg-debug.so+ ## compress the libffmpeg.so arm-linux-androideabi-strip --strip-unneeded $PREFIX/libffmpeg.so done
配置完成后就开始编译。
# ./FFmpeg-Android.sh
动态库输出
编译完成之后,build目录下会生成四个平台的动态库libffmpeg.so
#find . -iname “libffmpeg.so”
./build/ffmpeg/neon/libffmpeg.so
./build/ffmpeg/armv7/libffmpeg.so
./build/ffmpeg/vfp/libffmpeg.so
./build/ffmpeg/armv6/libffmpeg.so
生成的动态库就可以提供给JNI 封装,最后提供给APP使用。
更多使用方法可以参考:http://blog.csdn.net/leixiaohua1020/article/details/47008825
- android ffmpeg 动态库编译
- FFmpeg 1.2 for Android 编译动态库
- 编译ffmpeg生成Android动态库
- ffmpeg编译动态库4Android
- 编译 FFMPEG 动态库
- 使用NDK编译Android所需的FFMPEG动态库
- 基于NDK编译Android平台的FFmpeg动态库
- Ffmpeg编译Android库
- FFmpeg+x264编译Android库
- 编译ffmpeg的VC动态库
- Linux FFmpeg 编译so动态库
- window环境下使用ndk编译出android studio/Eclipse能使用的ffmpeg动态库
- Compile FFmpeg for Android(编译用于android的FFmpeg库)
- FFmpeg学习—Android 编译x264 库
- Unbantu 编译ffmpeg Android版本库
- ffmpeg编译android的so库
- 编译Android平台使用的FFmpeg库
- Android-FFmpeg编译生成单一的库
- Lua中强大的元方法__index详解
- 机器学习中向量函数的求导问题
- window编程之CreateThread
- 通过mysql outfile 直接快速导出.csv文件,适用于量级很大的导出操作
- poj 2826 判断线段位置关系复杂题目(真的气)
- android ffmpeg 动态库编译
- ArcGIS Engine常用数据访问方法
- 搭建Android开发环境
- A
- 51nod1101换零钱
- 常用查询的例子——From mysql api
- h5+css+js简单验证码
- SpringMVC日期类型自动转换的处理
- spring ioc原理解析