IT全栈圈

x264 交叉编译

2019-11-17  本文已影响0人  Damon_He

关于直播推流librtmp编译集成,看这里

x264

x264 是一个C语言编写的目前对H.264标准支持最完善的编解码库。与RTMPDump一样,可以在Android中直接使用,也可以集成进入FFMpeg。

交叉编译

在linux下下载编译:wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
解压:tar -xvf x264-master.tar.bz2
查看configure文件,编写编译脚本:

#!/bin/bash

NDK_ROOT=/root/android-ndk-r17c

PREFIX=./android/armeabi-v7a

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

CFLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=17 -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 : 关闭命令行
# 其他和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-17/arch-arm \
--extra-cflags="$CFLAGS"

make clean
make install

编译:

chmod +x  build.sh
./build.sh

将编译产物打包传给windows:

cd android/
zip -r x264.zip *
sz x264.zip

AS中集成x264

头文件和库文件导入,CMakelists.txt修改:

cmake_minimum_required(VERSION 3.4.1)
#引入指定目录下的CMakeLists.txt
add_subdirectory(librtmp)
#指定头文件查找路径
include_directories(librtmp)
include_directories(include)
add_library(native-lib SHARED native-lib.cpp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}")
target_link_libraries(native-lib rtmp log)

测试:

#include <jni.h>
#include <string>
#include <rtmp.h>
#include <x264.h>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_pusher_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    char version[100];
    sprintf(version, "rtmp version : %d", RTMP_LibVersion());
    x264_picture_t *pic = new x264_picture_t;
    x264_picture_init(pic);
    return env->NewStringUTF(version);
}
上一篇 下一篇

猜你喜欢

热点阅读