安卓编译ffmpeg和x264

一、下载NDK、X264、ffmpeg
(1) NDK选择版本(ndk-r14b)下载地址:
https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
(2) X264
X264下载地址:
http://www.videolan.org/developers/x264.html
(3) ffmpeg版本(ffmpeg-4.0.2):
https://www.ffmpeg.org/releases/ffmpeg-4.0.2.tar.gz
二、 在Linux系统中安装NDK以及配置好NDK环境(见前文配置)
三、 先编译X264
1、 编译X264前的配置
(1) 首先在系统环境中安装yasm

sudo apt install yasm

(2) 修改x264源码根目录下的configure中的这一行,改成下图这个样,不然生成的库的名字会是libx264.so.159 (Android系统是不识别这种命名的动态库的)
在这里插入图片描述
[注:这个当时自己进去看了看,忘了有没有修改了]
2、 在主目录下面新建一个文件夹:my
将下载好的X264放在这个文件my中(home/gyl/my)
打开终端(Ctrl+Alt+T)在终端中输入:
进入my文件夹:

cd my

解压X264压缩文件:

tar -xvf last_x264.tar.bz2

解压完成后在my文件夹中出现了x264-snapshot-20190914-2245 文件夹。
进入X264解压后的文件夹:

cd  x264-snapshot-20190914-2245 

3、在解压后的x264-snapshot-20190914-2245 文件中,新建
build_android.sh 脚本
新建脚本使用的shell命令为:

touch build_android.sh

输入命令:

vim build_android.sh

点击Enter打开文件,在文件中粘贴下面内容:

#!/bin/sh
make distclean
#这里替换成你的NDK目录即可
export  NDK=/home/gyl/my/android-ndk-r14b
export  SYSROOT=$NDK/platforms/android-24/arch-arm64
export TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
CPU=arm64
PREFIX=$(pwd)/android/$CPU

function build_64
{
./configure \
--prefix=$PREFIX \
--enable-static \
--enable-shared \
--enable-pic \
--disable-asm \
--enable-strip \
--host=aarch64-linux-android \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}

build_64
make -j8
make install

关闭终端打开的这个文件,发现在 x264-snapshot-20190914-2245 文件夹中出现了一个build_android.sh(但是里面内容显示为空,我也没弄清怎么回事,将上面的代码打开这个.sh文件,又重新复制粘贴了一遍,保存关闭)

最后在终端中输入X264编译命令:

 ./build_android.sh

此时提示的是bash: .xx.sh: 权限不够.。
在终端命令行中:
先是:chmod 777 xx.sh
最后执行:bash xx.sh
【或者:source xx.sh 或者:sh xx.sh】
就可以了
重新在终端中输入:

 ./build_android.sh

开始编译,提示输入make
然后输入:

make

等待编译完成,最后在终端中输入:

make install

到这里,X264的编译完成。
编译完成图如下:
在这里插入图片描述
4、编译带X264的ffmpeg:
将下载好的ffmpeg压缩包放入my文件夹中
在终端进入my文件夹,开始压缩命令:

tar -xvf ffmpeg-4.0.2.tar.gz

解压完成,在my文件夹中出现了一个ffmpeg-4.0.2文件夹
进入这个解压后的文件夹:

cd ffmpeg-4.0.2

在解压后的文件夹ffmpeg-4.0.2中,新建build_ffmpeg_android64.sh脚本文件(使用的shell命令“touch build_ffmpeg_android64.sh”)

touch build_ffmpeg_android64.sh

输入命令:

vim build_ffmpeg_android64.sh

点击Enter打开文件,在文件中粘贴下面内容

#!/bin/bash
make clean
#你自己的NDK路径。
export NDK=/home/gyl/my/android-ndk-r14b
#设置你的android平台编译器的版本 这里采用Android4.0
export SYSROOT=$NDK/platforms/android-24/arch-arm64
#编译使用的toolchain
export TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
export CPU=arm64 \
#这个是输出的路径
export PREFIX=$(pwd)/android/$CPU
#export ADDI_CFLAGS="-marm -I/usr/local/include -I/home/gyl/my/x264-snapshot-20190914-2245/android/arm/include"
#export ADDI_LDFLAGS="-L/home/gyl/my/x264-snapshot-20190914-2245/android/arm/lib -L/usr/local/lib"

./configure --target-os=android \
--prefix=$PREFIX \
--arch=arm64 \
--enable-neon \
--enable-hwaccels \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--disable-doc \
--enable-shared \
--enable-static \
--disable-x86asm \
--disable-symver \
--enable-gpl \
--enable-libx264 \
--enable-muxer=mp4 \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic -I/home/gyl/my/x264-snapshot-20190914-2245/android/arm64/include  $ADDI_CFLAGS" \
--extra-ldflags="-L/home/gyl/my/x264-snapshot-20190914-2245/android/arm64/lib $ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG

make -j16
make install

关闭终端打开的这个文件,发现在 ffmpeg-4.0.2 文件夹中出现了一个build_ffmpeg_android64.sh(但是里面内容显示为空,我也没弄清怎么回事,将上面的代码打开这个.sh文件,又重新复制粘贴了一遍,保存关闭)
在这里插入图片描述
脚本建立完成后,同理在终端命令中添加权限:

chmod build_ffmpeg_android64.sh

然后:

bash build_ffmpeg_android64.sh

最后进行编译,执行build_ffmpeg_android64.sh:
1、

 chmod +x build_ffmpeg_android64.sh

2、

./build_ffmpeg_android64.sh

到这里ffmpeg编译完成。
编译完成图如下:
在这里插入图片描述
参考文章:
1、脚本创建:
https://www.jianshu.com/p/feab970fd74c
2、参考X264和ffmpeg编译脚本:
https://blog.csdn.net/Xiaoma_Pedro/article/details/104891937?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%AE%89%E5%8D%93%E7%BC%96%E8%AF%91x264%E5%92%8Cffmpeg&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-104891937
3、编译中遇到的问题搜索解决:
(1) 解决权限问题:
http://blog.sina.com.cn/s/blog_ea0196720102vxl2.html
(2) 编译中的一些坑:
https://www.jianshu.com/p/da5d55b59f4b
(3) 其他参考:
https://blog.csdn.net/Enjolras_fuu/article/details/83513993

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值