美文网首页
NDK编译x264并引入Android工程中

NDK编译x264并引入Android工程中

作者: FlyerGo | 来源:发表于2020-04-06 14:38 被阅读0次

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

    相关文章

      网友评论

          本文标题:NDK编译x264并引入Android工程中

          本文链接:https://www.haomeiwen.com/subject/xbrephtx.html