文档详情

ffmpeg 在 win平台下的编译以及集成.docx

发布:2025-05-14约2.98千字共5页下载文档
文本预览下载声明

ffmpeg?在?win平台下的编译以及集成

#buildarmeabi

#build_binarmarmeabiarm-linux-androideabiarm-linux-androideabi$ANDROID_ARMV5_CFLAGS

#buildarmeabi-v7a

#build_binarmarmeabi-v7aarmv7a-linux-androideabi${API}arm-linux-androideabi$ANDROID_ARMV7_CFLAGS

#buildarm64-v8a

build_binarm64arm64-v8aaarch64-linux-android${API}aarch64-linux-android$ANDROID_ARMV8_CFLAGS

#buildx86

#build_binx86x86i686-linux-android${API}i686-linux-android$ANDROID_X86_CFLAGS

#buildx86_64

#build_binx86_64x86_64x86_64-linux-android${API}x86_64-linux-android$ANDROID_X86_64_CFLAGS

相关解释:

CC:指定c编译器路径CROSS_PREFIX:指定交叉编译工具文件路径的统一前缀。各个工具的最终文件路径为:cross-prefix+工具名,比如上面脚本的prefix为TOOLCHAIN/bin/arm-linux-androideabi-,那么ar工具的路径即为TOOLCHAIN/bin/arm-linux-androideabi-artarget-os:指定目标平台,因为ffmpeg可以在各平台上运行的,各平台上一些配置不太一样,所以需要指定的

另外编译脚本里边还有大量的enabledisable,这些都是configure脚本里的编译选项,比如说--enable-shared意思就是编译动态库,所以上面的脚本最终会生成so文件,而不会生成a文件。

这些编译选项都可以使用configure--help,可以查询到,大家可以试试

不管是这些enable编译选项,还是像CC一类的选项,都是在配置configure脚本,通过文本方式打开configure文件,可以看到:

--cc=CCuseCcompilerCC[$cc_default]

--target-os=OScompilertargetsOS[$target_os]

--enable-sharedbuildsharedlibraries[no]

运行编译脚本之后,如果编译成功了就会看到相关so库了,so库在lib文件夹中

3、FFmpeg集成

首先看cmakelist怎么写:

#设置最小使用版本

cmake_minimum_required(VERSION3.18.1)

project(demo)

include_directories(include)

#添加本地so库native-lib:这个是声明引用so库的名称SHARED:表示共享so库文件

#构建so库的源文件

add_library(

demo

SHARED

native-lib.cpp

set(SO_DIR${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})

#使用系统ndk提供的库,如log库

#log-lib这个指定的是在NDK库中每个类型的库会存放一个特定的位置,而log库存放

#在log-lib中

#log指定使用log库

find_library(

log-lib

message(c_CMAKE_SOURCE_DIR:${CMAKE_SOURCE_DIR})

#加载avcodec-57库

add_library(avcodec

SHARED

IMPORTED)

set_target_properties(avcodec

PROPERTIESIMPORTED_LOCATION

${SO_DIR}/libavcodec.so)

add_library(avutil

SHARED

IMPORTED)

set_target_properties(avutil

PROPERTIESIMPORTED_LOCATION

${SO_DIR}/libavutil

显示全部
相似文档