Bilibili ci-ijk-ffmpeg-android项目指南
目录结构及介绍
Bilibili 的 ci-ijk-ffmpeg-android
项目主要关注于 Android 上 ijkplayer 的持续集成。此项目主要涉及了对 FFmpeg 和 ijkplayer 进行定制化,以满足特定功能需求的过程。
主要目录及其作用:
- contrib: 包含预构建的 FFmpeg 库以及编译脚本。
compile-ffmpeg.sh
: 用于编译 FFmpeg 的脚本。ffmpeg-arm64
,ffmpeg-armv7a
: 存放不同架构下的 FFmpeg 源码。
- ijkplayer: 包含 ijkplayer 的源码和相关配置。
ijkplayer-arm64
,ijkplayer-armv7a
: 分别对应于 arm64 和 armv7a 架构的 ijkplayer 源码。src/main/jni/ffmpeg
: 包含 FFmpeg 的 JNI 接口和本地链接库文件。Android.mk
: 用来指定本地库的编译配置。
ijkmedia
: 包括 ijkplayer 的媒体处理组件。ff_ffplay.c
: 此处进行 FFmpeg 插件化的开发工作。
启动文件介绍
对于 ci-ijk-ffmpeg-android
来说,“启动”概念更多地涉及到其构建流程而非传统意义上的程序启动:
-
compile-ffmpeg.sh: 位于
contrib
文件夹内的compile-ffmpeg.sh
脚本是整个项目的关键组成部分。通过这个脚本,可以定制化编译 FFmpeg,以适配各种不同的 Android 架构(如 armv7a 和 arm64)。脚本还会更新Android.mk
文件来包含所需的 FFmpeg 动态库。 -
build.gradle (Project): 项目根目录的
build.gradle
是整个项目的构建配置文件,它定义了模块依赖关系和构建过程。通过 Gradle 进行构建时,这将被作为顶级构建脚本读取。
配置文件介绍
该项目的核心配置文件通常包括:
-
Android.mk: 在
ijkplayer-arm64
和ijkplayer-armv7a
目录中,src/main/jni/ffmpeg
内的Android.mk
文件用于描述原生库的构建选项。这些.mk
文件控制着本地库如何被编译到最终的应用中。- 它们会指定本地库名(
LOCAL_MODULE
)、源代码文件(LOCAL_SRC_FILES
)和其他相关的编译参数。
- 它们会指定本地库名(
-
.gitignore: 虽然这不是一个真正的“配置”文件,但
.gitignore
对于管理项目非常重要,它可以列出不应该提交到 Git 仓库的文件或目录列表,例如生成的二进制文件或临时构建文件。 -
gradle.properties: 在
settings.gradle
或其他位置可能存在gradle.properties
文件,它们用于设置全局的 Gradle 属性,比如编译的 JDK 版本或是第三方库的位置等。
以上提到的内容涵盖了该项目的主要组成部分,理解这些可以帮助开发者更好地定制和优化 FFmpeg 和 ijkplayer 在 Android 系统上的应用。