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工程中 方法大同小异。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/19865.html

(0)

相关推荐

发表回复

登录后才能评论