澳门银河网上官方赌场_老品牌值得信赖

ITKeyword,专注技术干货聚合推荐

注册 | 登录

ffmpeg2.6.2在Ubuntu下使用NDK编译成.so文件

xm447975373 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:Ubuntu 14.10+NDK+ffmpeg编译+Android

本文就是自己记录 在Ubuntu 14.10-64位系统下,用android-ndk-r10d交叉编译ffmpeg用于Android调用ffmpeg 参考: http://www.roman10.net/how-to-build-ffmpeg-wi

参考blog:http://www.cnblogs.com/wainiwann/p/3785485.html


由于需要做视频播放器,编解码部分需要用到ffmpeg,没办法只能编译ffmpeg.so

接下来就是参考网上多个ffmpeg的编译过程,在多次尝试后终于编译成功,记录下过程方便以后查询,同时也跟大家分享下!

ps:不喜勿喷!

-------------------------------------------------------------------------

配置环境:

1、 安装Ubuntu 10.04.4(32位)

2、下载ffmpeg-2.6.2.tar.bz2

3、下载android-ndk-r9d-linux-x86.tar.bz2(32位)

---------------------------------------------------------------------

4、ndk解压目录:/home/xxx/android-ndk-r9d (xxx:就是你的个人文件夹)

(1.) 配置NDK的环境变量:

终端内执行:“ gedit ~/.bashrc ”

在打开的文件末尾添加如下内容:

NDK=/home/xxx/android-ndk-r9d

export NDK

(2.)在当前bash环境下读取并执行 ~/.bashrc 中的命令:

终端执行:" source  ~/.bashrc "

(3.)查看是否生效:

推荐:把ffmpeg编译成单独的so文件

在之前的一篇《FFMPEG移植到Android(ubuntu环境下)》讲到如何在android ndk下编译ffmpeg,但这个例子是生成多个so文件的。如果想最后只生成一个libffmpeg.so,要

终端执行: " echo $NDK "

结果:/home/xxx/android-ndk-r9d

(4.)测试NDK编译JNI工程:

到android-ndk-r9d 的sample目录的hello-jni 目录里

终端执行:“ $NDK/ndk-build ”

如果环境配置成功会生成so库的。

-----------------------------------------------------------------

5、解压ffmpeg-2.6.2.tar.bz2

将ffmpeg-2.2.tar.gz解压后拷贝到任意目录,本例是拷贝到.../android-ndk-r9d/sample/ffmpeg2.6.2 

在ffmpeg2.6.2文件下添加" build_android.sh "文件:(ps:下面代码直接复制,如需修改注意“--prefix=$PREFIX \”前面的空格位)

#!/bin/bash

SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86

function build_one
{
./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --enable-gpl \
    --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

修改configure文件:

很多ffmpeg编译资料上面说要修改configure文件 ,说的原因是 如果不修改的话,在android上 System.loadLibrary("xxx"); 的时候个别so库无法加载的问题。

打开 ffmpeg源码内 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)'

6、在ubuntu 32位下进行编译ffmpeg源码以得到android平台 arm下能使用的那几个so库

sudo chmod +x build_android.sh

./build_android.sh

---------------------------------------------------------------------

等待编译,这个过程可能需要10~20分钟,最后会在ffmpeg 2.6.2文件夹下的/android/arm/include+lib2个文件夹。

在lib文件夹下会有以下8个.so,最后我们需要的就是libavutil-54.so、libavcodec-56.so、libswresample-1.so、libavformat-56.so
libswscale-3.so、libpostproc-53.so、libavfilter-5.so、libavdevice-56.so。

得到这些so后,我们接下来的工作就是需要在android下使用,在下一篇文章中会接着说明。

推荐:在Ubuntu中用Android NDK编译FFmpeg

首先感谢来自Scott Wong的文章http://archive.cnblogs.com/a/1909455/,基于他的基础上进行FFmpeg的编译,让我节省了大量了时间。 ? 我在编译的过程上遇到了一些

参考blog:http://www.cnblogs.com/wainiwann/p/3785485.html 由于需要做视频播放器,编解码部分需要用到ffmpeg,没办法只能编译ffmpeg.so 接下来就是参考网上多个ffmpeg的编译过程,在多次尝试

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。

澳门银河网上官方赌场 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>