Android 简单引入x264

Posted 胡刚2021

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 简单引入x264相关的知识,希望对你有一定的参考价值。

引入x264前,需要先编译x264:编译x264
gitee源码链接:android 引入 libx264.so

1.新建一个 native 工程
然后将编译好的armeabi-v7a整个文件夹拷贝到 app\\cpp目录下面


2.配置CMakeLists.txt

cmake_minimum_required(VERSION 3.10.2)

project("myx264test")
add_library(
        myx264test
        SHARED
        native-lib.cpp)
find_library(
        log-lib
        log)
        
#最重要的是下面的几行
add_library(
        x264
        SHARED
        IMPORTED)
set_target_properties(x264 PROPERTIES IMPORTED_LOCATION $CMAKE_SOURCE_DIR/$android_ABI/lib/libx264.so)
include_directories( $CMAKE_SOURCE_DIR/$ANDROID_ABI/include)
target_link_libraries(
        myx264test
        x264
        $log-lib)

其中,以动态库的形式引入 libx264.so 使用了以下代码:

add_library(
        x264
        SHARED
        IMPORTED)
set_target_properties(x264 PROPERTIES IMPORTED_LOCATION $CMAKE_SOURCE_DIR/$ANDROID_ABI/lib/libx264.so)
include_directories( $CMAKE_SOURCE_DIR/$ANDROID_ABI/include)
target_link_libraries(
        myx264test
        x264
        $log-lib)

3.配置build.gradle

externalNativeBuild 
    cmake 
        cppFlags ""
        abiFilters 'armeabi-v7a'
    

ndk
    abiFilters 'armeabi-v7a'


4.编写native-lib.cpp

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

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myx264test_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) 
    std::string hello = "Hello from C++";
    x264_nal_t *pp_nals = NULL;
    x264_picture_t *pic_in = NULL;
    return env->NewStringUTF(hello.c_str());


最后,编译运行即可

以上是关于Android 简单引入x264的主要内容,如果未能解决你的问题,请参考以下文章

Windows系统下编译FFmpeg for Android(支持x264)

推荐阅读: android rtmp推流直播学习----视频软编码x264

关于在Android音视频开发中,Google API的MediaCodeC与成熟开源编码器X264的应用对比及使用场景

Android音视频开发学习路线+项目实战+源码解析(WebRTC Native 源码X264源码FFmpegOpus源码.....)

x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1

企业级Android音视频开发学习路线+项目实战+源码解析(WebRTC Native 源码X264源码FFmpegOpus源码.....)