在32位的Ubuntu 11.04中为Android NDK r6编译FFmpeg0.8.1版-Android中使用FFmpeg媒体库(一)

简介:

原文:http://doandroid.info/?p=465

最近想通过FFmpeg库来练习在Android中使用其他第三方库进行开发。本文基本按照Ubuntu 10.10 64bit下使用Android NDK r6编译FFmpeg 0.8.1实现,感谢原作者辛苦的工作。

1 下载相应的Android NDK r6文件
2 下载FFmpeg0.8.1的版本
截至到2011年10月2日已经发布了FFmpeg 0.8.5版本。

本文中系统之前已经配置过了NDK r6,我们通过控制台使用ndk-build不会出现找不到命令的情况。
本文的相关路径如下。

NDK目录为 /root/develop/android-ndk-r6
FFmpeg目录为 /root/develop/workspace/jni

3 创建一个可执行脚本:

./configure  --disable-static --enable-shared --enable-gpl --enable-version3 --enable-nonfree --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-avfilter --disable-postproc --enable-small --cross-prefix=/root/develop/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --enable-cross-compile --target-os=linux --extra-cflags='-I/root/develop/android-ndk-r6/platforms/android-9/arch-arm/usr/include' --extra-ldflags='-L/root/develop/android-ndk-r6/platforms/android-9/arch-arm/usr/lib -nostdlib' --arch=arm --disable-symver --disable-debug --disable-stripping
 
sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
 
sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
 
sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
 
sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
 
sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
 
sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
文件下载:
config.sh

本文为放到/root/develop/workspace/jni目录
4 使用命令

chmod 777 ./config.sh
./config.sh

5 创建一个Android.mk文件,放在 /root/develop/workspace/jni目录
内容参考Android.mk
本文使用的文件为
Android.mk

6 在/root/develop/workspace/jni目录下,执行

ndk-build

7 本文中会在/root/develop/workspace/libs/armeabi/中生成一个libffmpeg.so文件。

注意:
本人在做这个操作的时候,参考过How to Build FFmpeg for Android,但是并不成功。当然他提到的Android NDK r5 我没有测试过。


参考文章:
1 http://www.cnblogs.com/mcodec/articles/2114674.html
2 http://www.cnblogs.com/mcodec/articles/2114714.html
3 http://www.cnblogs.com/scottwong/archive/2010/12/17/1909455.html
4 http://blog.csdn.net/fsfcvictor/article/details/5972044
5 https://gist.github.com/1126971
6 http://www.cnblogs.com/shaobin0604/archive/2011/08/05/2128619.html
7 http://www.roman10.net/?p=389

主参考

http://www.cnblogs.com/shaobin0604/archive/2011/08/05/2128619.html



相关文章
|
29天前
|
存储 编解码 算法
探索FFmpeg复用:深入理解媒体数据的组织与封装(三)
探索FFmpeg复用:深入理解媒体数据的组织与封装
34 0
|
1月前
|
编译器 开发工具 Android开发
Android 引入FFmpeg
Android 引入FFmpeg
20 0
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
72 0
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
4月前
|
XML Android开发 数据安全/隐私保护
Android 自定义开源库 EasyView
Android 自定义开源库 EasyView
|
2天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
20 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
29天前
|
存储 编解码 安全
探索FFmpeg复用:深入理解媒体数据的组织与封装(二)
探索FFmpeg复用:深入理解媒体数据的组织与封装
48 0
|
29天前
|
存储 编解码 算法
探索FFmpeg复用:深入理解媒体数据的组织与封装(一)
探索FFmpeg复用:深入理解媒体数据的组织与封装
55 0
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0
|
3月前
|
存储 Ubuntu 开发工具
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译

热门文章

最新文章