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工程中》,方法大同小异。
网友评论