Android FFmpeg 预编译so和可执行文件

https://github.com/hzw1199/Android-FFmpeg-Prebuilt

Android 平台 FFmpeg 预编译二进制文件 — 开箱即用,无需编译。

提供 ffmpeg / ffprobe 可执行文件,以及将所有核心模块合并为单个 libffmpeg.so 共享库。


特性

  • FFmpeg 8.0.1 — 最新主版本
  • Android arm64-v8a (aarch64) — 面向现代 64 位设备,minSdkVersion 28
  • 单一共享库libffmpeg.so 将 libavcodec、libavformat、libavfilter、libavutil、libavdevice、libswresample、libswscale 全部 7 个核心库合并为一个 .so
  • 独立可执行文件ffmpegffprobe 可直接推送到设备通过 shell 运行
  • 包含 C/C++ 头文件 — 可直接集成到 Android NDK 项目
  • 纯 LGPL 构建--disable-gpl --disable-nonfree,可安全用于商业项目
  • MediaCodec 硬件加速 — 通过 Android MediaCodec 实现 H.264 / HEVC / MPEG-4 硬件解码
  • 16 KB 页面大小兼容 — 符合 Google Play 16 KB 页面大小要求,可用于面向 Android 15+ 的应用上架
  • 体积优化 — 使用 --enable-small -Os 编译

文件结构

ffmpeg-8.0.1/
├── bin/
│   ├── ffmpeg           # 命令行可执行文件 (15 MB)
│   └── ffprobe          # 命令行可执行文件 (14 MB)
├── libffmpeg.so         # 合并共享库 — 全部 7 个模块合一 (74 MB)
├── include/
│   ├── libavcodec/
│   ├── libavdevice/
│   ├── libavfilter/
│   ├── libavformat/
│   ├── libavutil/
│   ├── libswresample/
│   └── libswscale/
└── examples/            # FFmpeg 官方示例源码

编译配置

编码器与解码器

已启用所有 LGPL 兼容的编码器和解码器,包括 MediaCodec 硬件解码器:

MediaCodec 解码器说明
h264_mediacodec通过 Android MediaCodec 进行 H.264 硬件解码
hevc_mediacodec通过 Android MediaCodec 进行 HEVC 硬件解码
mpeg4_mediacodec通过 Android MediaCodec 进行 MPEG-4 硬件解码

其他能力

类别状态
封装器 / 解封装器全部启用
协议全部启用(含网络协议)
滤镜全部启用
解析器 / 码流过滤器全部启用
硬件加速MediaCodec + JNI 已启用
iconv已启用

libffmpeg.so 包含的库

libffmpeg.so 由以下全部 7 个静态库链接而成:

说明
libavdevice设备采集与播放
libavfilter音视频滤镜框架
libavcodec音视频编解码
libavformat封装与解封装(容器格式)
libswresample音频重采样与格式转换
libswscale视频缩放与像素格式转换
libavutil通用工具函数

快速开始

作为命令行工具在设备上使用

adb push ffmpeg-8.0.1/bin/ffmpeg /data/local/tmp/
adb shell chmod +x /data/local/tmp/ffmpeg
adb shell /data/local/tmp/ffmpeg -version

在 Android NDK 项目中使用 libffmpeg.so

CMakeLists.txt

add_library(ffmpeg SHARED IMPORTED)
set_target_properties(ffmpeg PROPERTIES
    IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libffmpeg.so
)
target_include_directories(your_target PRIVATE ${CMAKE_SOURCE_DIR}/ffmpeg-8.0.1/include)
target_link_libraries(your_target ffmpeg)

编译信息

项目
FFmpeg 版本8.0.1
目标平台Android
目标 ABIarm64-v8a (aarch64)
minSdkVersion28 (Android 9.0)
NDK 版本r28
工具链LLVM / Clang
许可证模式LGPL-2.1(无 GPL、无 non-free)
构建方式静态库 → 合并共享库 + 独立可执行文件
体积优化--enable-small-Os -fpic

许可证

本构建使用 --disable-gpl --disable-nonfree 编译,属于纯 LGPL-2.1 构建。您可以在专有/商业应用中使用,只需遵守 LGPL-2.1 许可证条款。

本仓库分发 FFmpeg 的预编译二进制文件。完整的 FFmpeg 源代码可从以下地址获取:

FFmpeg 包含众多贡献者的代码。完整的版权信息请参阅 FFmpeg 源代码发行版。


如果这个项目帮到了你,请考虑给一个 ⭐ — 也能帮助更多人发现它!

Share

You may also like...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注