NDK编译x264并引入到Android工程

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。
而x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。

在x264在直播中的应用就是将摄像头采集到的视频数据进行编码,然后送到送到rtmp打包推流。

要在Android中使用x264就要,首先需要预编译出x264的静/动态库。

依照惯例,笔者先说明一下笔者的实例编译环境:

今天我们使用的是编译系统是Mac系统。

使用的NDK版本是r16,NDK在r18之后之后彻底移除了gcc(包含r18版本),所以如果使用r17之后的版本的话需要修改编译脚本。

编译步骤

首先我们从x264官网:https://www.videolan.org/developers/x264.html下载好x264的源码解码到制定目录。

然后新建编译脚本build_x264.sh:


#!/bin/bash

# 将NDK的路径替换成你自己的NDK路径
NDK_ROOT=/Users/liangchuanfei/Documents/Android/SDK/android-ndk-r16b

# 设置工具链mac苹果电脑的是darwin-x86_64 而如果是linux的话则是linux-x86_64

TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64

PREFIX=./android/armeabi-v7a

FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC"
#--disable-cli 不需要命令行工具
#--enable-static 静态库
#和ffmpeg差不多
./configure \
--prefix=$PREFIX \
--disable-cli \
--enable-static \
--enable-pic \
--host=arm-linux \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS"

make clean
make install

编译脚本完成后我们给它增加一下可执行权限:

chmod +x build_x264.sh

然后运行脚本./build_x264.sh等待编译完成即可。

编译完成后会在当前目录的android/armeabi-v7a目录下生成对于的头文件已经静态库文件。

编译出静态库之后就可以把头文件以及点a文件拷贝到AS中引入到Android工程中使用了。如果你还不知道如何引用可以参考下这篇文章:《将ffmpeg引入到Android Studio工程中》,方法大同小异。

最后如果你对音视频开发感兴趣可扫码关注

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值