2. FFmpeg 编译 for Android

windows10下编译ffmpeg for android----编译成功_msys编译ffmpeg for andoid --extra-cflags不设置可以吗 请检查${MinGWDir}/msys/1.0/bin(默认为C:/MinGW/msys/1.0/bin)下有没有pr.exe,如果没有,那么在编译libav过程中,执行./configure会报错:pr command not found。注意:一般来说低版本ndk编译的能在高版本使用,但高版本ndk编译的无法在低版本使用,因为NDK平台不是后向兼容的,而是前向兼容的,因此请根据实际情况选择ndk的版本。第五步,在刚刚打开的mingw中切换到ffmpeg路径下,执行build_android.sh。 阅读详情
白话:
         由于自己工作中一直从事Android方面的开发,因此此文只介绍FFmpeg在Android平台的编译方法。Android开发从开发语言角度分,主要涉及到Java开发和C/C++开发。C/C++开发就是俗称的Android Native开发,通常Native开发的是一些so后缀名的lib库。Java上层开发的功能单元通过JNI与C/C++开发的Native层的lib库进行通信。由于FFmpeg主要是C语言开发,所以我们需要将FFmpeg源码编译成so的lib库,供JAVA层通过JNI调用Native层的这些so库中的方法/函数。

2.1 Android Native开发
       Android开发分为Java层的开发和C/C++层的开发。如果仅仅是Java层的开发,我们仅需要Android的SDK来支撑JAVA层的开发就可以了。如果需要Native层开发,那么我们就需要Android的NDK来支撑我们C/C++层的开发。
      
      NDK的下载:
      Android NDK官网: https://developer.android.com/ndk/downloads/index.html(需要翻墙,但是可以通过一些网盘分享获取,请google或baidu)。   
       针对自己的开发平台选择不同的版本下载。 本文以Ubuntu12.04 64位作为开发平台介绍如何编译。
       目前可以下载的最新版本为: android-ndk-r14b-linux-x86_64.zip
2.2 使用NDK编译FFmpeg准备工作
  • 下载android ndk,解压,我解压后的目录为:android-ndk-r14b。
  • 将FFmpeg源码目录放入android-ndk-r14b目录中的sources目录下。
  • 进入sources下的FFmpeg目录,新建android/arm和android/arm/tmp目录,android/arm/tmp主要存放编译过程的中间生成文件。当编译成功后,android/arm目录下会生成include目录和lib目录,分别存放头文件和生成的so库。
2.3 使用编译脚本编译
  • 在FFmpeg目录下创建编译脚本build_android.sh:
#!/bin/bash
#配置编译中间文件的存储目录,此目录在2.2已经创建过
export TMPDIR=$(pwd)/android/arm/tmp
#配置android ndk的目录路径。
NDK=$HOME/Android/android-ndk-r14b
#sysroot 选项设定 gcc 在编译源码的时候,寻找头文件和库文件的根目录。
#配置sysroot目录路径,在platforms目录下选择自己需要的android版本,
#我自己现在使用的是android 7对应的是API level 24因此选择android-24。
#因为我需要so运行在cpu的架构为arm因此选择arch-arm,此目录下主要包括
#编译时需要使用的标准库,比如libc库等。
SYSROOT=$NDK/platforms/android-24/arch-arm
#配置交叉编译工具目录,此目录主要包括各种编译平台的编译工具,因为我使用的so库是在arm上
#运行,因此我选择了toolchains目录下最高版本的rm-linux-androideabi-4.9。
#交叉编译为在一个平台上去编译另一个平台上可以执行的本地代码,而我是在64位ubuntu12.04
#上编译可以跑在arm上的目标库。
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
#配置编译完毕后,so库文件安装目录,此目录上几步中已配置。
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"

function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--enable-small \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
./build_android.sh





ffmpeg for android编译全过程与遇到的问题 编译前准备编译环境:Ubuntu16,可自行下载最新版并百度永久许可证或在服务器上安装Ubuntu有条件的最好还是在Liunx平台下编译吧,Windows平台下编译坑更多,文章末尾有Github源码可自取开始编译1.解压NDK,执行如果提示没有unzip,执行此命令安装2.解压ffmepg,3.进入ffmpeg4.2.2目录,修改根目录下的 configure 文件搜索替换为此步骤主要是将so命名为Android通用的so名称。 阅读详情

相关推荐

FFmpeg3.2最新版编译Mediacodec For Android脚本

#!/bin/bash export TMPDIR=/home NDK=/project/android-ndk-r10e SYSROOT=$NDK/platforms/android-16/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86 CPU=arm PREFI

Android系统攻城狮 5058

【FFmpeg笔记】03-Win10编译ffmpeg4.2.1(For Android)

Table of Contents 一、安装适用于 linux 的 Windows 子系统 二、下载 Android NDK 三、准备 ffmpeg 源文件 3.1 下载 ffmpeg 四、编写编译脚本 4.1 编写脚本 4.2 开始编译 五、导入 Android 目录使用 5.1 创建 C++ 工程 5.2 修改 build.gradle 5.3 将 ffmpeg 编译结果导入工程 5.4 修改 CMakeLists.txt 5.5 编写代码 6、常见错误 6.1 mmap6

eieihihi的专栏 1961

Android源码编译FFmpeg4.0.2单独so库for Android(验证可用)

ffmpeg下载 1、修改ffmpeg-4.0.2源码下configure文件 将该文件中的如下四行: SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)...

Android系统攻城狮 3277

FFmpeg 1.2 for Android 编译动态库

历时2天,终于把它给编译成功了!现在里沃特把配置好的文件提供给大家下载。希望给大家省点时间。 FFmpeg 最新  1.2 版本,如果您的版本不一样,请对配置文件做出相应的修改! 编译环境:Ubuntu-11.10,android-ndk-r6-crystax-2 配置文件下载 1.创建文件夹:ffmpeg,把下载好的文件在 Linux 下解压到 ffmpeg 下     tar xzv

萌萌的It人 www.itmmd.com 2424

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

YOLO与3D点云融合:从原理到实践的多模态3D目标检测指南

最近在实验室和几个研究生聊天,发现一个挺有意思的现象:大家一提到“YOLO+3D点云”这个组合,第一反应往往是“顶会热门”、“发论文利器”,但真上手去复现或者想基于这个方向做点创新时,又常常卡在第一步——感觉每个部分都懂一点,但就是串不起来,不知道从哪开始,也不知道核心的“价值点”到底在哪。 这让我想起几年前刚开始接触这个领域时的自己,也经历过同样的困惑。当时看了很多论文,感觉“3D目标检测”这个方向既酷又难,YOLO负责2D图像里的快速定位,点云提供精确的三维空间信息,听起来是天作之合。但真正把代码跑起来

weixin_34267123的博客 415

Ubuntu环境编译FFmpeg3.2.2-for-android

前言最近一直在弄FFmpeg如何在Android上集成开发使用。那么问题来了,作为一个Android应用程序员来说,想使用C算法库的某些算法就一脸懵逼了,因为我们只能调用别人编译好的xxx.so类库才能在应用层使用的如鱼得水。为此,本博客教大家如何编译FFmpeg,以实现得到在Android的调用所需的xx.so库文件(纯粹学习,大牛请慢走不送)。准备环境1、Ubuntu14.4的编译环境(可在wi

u010085954的博客 2126

JHU ICBM DTI Atlas纤维束模板介绍

JHU ICBM DTI atlas 纤维束的定位与功能介绍

machinelearning_er的博客 6429

Mac OSX 编译 FFmpeg3.4.2 for Android

下载FFmpeg & NDK http://ffmpeg.org/download.html 下载 ffmpeg-3.4.2.tar.bz2 http://www.androiddevtools.cn 下载ndk-15c 下载好,解压 note: 试过ndk-15b和ndk-16b,都编译失败了,报各种 .h(如stdlib.h, errno.h)头文件找不到,其实是有...

打渔还是晒网 —— stone 968

5分钟搞定SNMP工具安装:从Linux到Windows的snmpwalk/snmpget全攻略

本文提供了SNMP工具(snmpwalk/snmpget)在Linux和Windows系统上的快速安装与使用指南,涵盖从基础安装到高阶应用的全面解析。通过详细的命令示例和故障排查技巧,帮助用户快速掌握网络设备监控与诊断的核心技能,提升运维效率。

weixin_29248313的博客 557

手把手教你搭建硬件在回路(HIL)仿真系统:从Simulink建模到实时测试

本文详细介绍了如何从零开始搭建硬件在回路(HIL)仿真系统,涵盖Simulink建模、实时仿真、代码生成及调试等关键步骤。通过具体配置示例和优化技巧,帮助开发者解决复杂控制系统验证中的技术难题,提升半实物仿真的效率和可靠性。

weixin_30952535的博客 445

Android开发——编译FFmpeg(二、Linux系统编译FFmpeg)

在上一章中我们简要介绍了编译FFmpeg的一些基础知识,如果你对这些FFmpeg for Android还不是很了解,建议移步 简单学习一下。本章我将详细介绍如何在Linux系统上编译FFmpeg for Android。 前期准备: Linux环境(Ubuntu 16.04):64位 NDK :可以从NDK官网上下载,Linux上可以直接用命令行下载我这里使用的是android-n...

Qyy_nice的博客 656

基于STM32的电子时钟设计

基于STM32的电子时钟设计1、设计目的2、设计具体要求3、proteus仿真图4、程序代码 1、设计目的 (1)掌握使用KEIL MDK5进行软件开发的具体流程; (2)掌握硬件电路的设计方法; (3)掌握STM32微控制器的程序设计及代码编写方法。 2、设计具体要求 (1)通过STM32自带的实时时钟功能获取时间信息; (2)在OLED显示屏上显示日期、时、分、秒等时间信息; (3)通过按键可对时间信息进行修改; (4)具有闹钟设定功能; (5)加分项:自行增加其他功能。 3、proteus仿真图 4

唯一的博客 2万+

Android开发——编译FFmpeg(三、Windows系统编译FFmpeg)

上一章我介绍了用Linux系统编译FFmpeg的过程,但实际情况是很多人没有Linux系统,只能在Windows系统上进行编译。本篇文章我将介绍如何用Windows系统编译FFmpeg for Android。 前期准备: Windows系统(我用的是win10) ...

Qyy_nice的博客 1097

解码器选型参数,结构原理,工艺与注意问题总结

解码器芯片(Decoder Chip)是电子设备中的一个重要组件,通常用于处理、解释和输出存储在某种编码格式中的数据或信号。本文对解码器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1172

【异常】OpenClaw调用火山引擎大模型提示词 Agent failed before reply: All models failed (6): volcengine/kimi-k2-5-26

摘要: 本文针对OpenClaw调用火山引擎大模型服务时触发的全量熔断报错(All models failed)提供全链路排查方案。报错核心为服务熔断(cooldown)和模型不可用(model_not_found),主要源于账号权限、API凭证失效或模型标识错误。解决方案按优先级分步实施:1)校验账号状态与AK/SK有效性;2)核对官方模型标识;3)重启服务解除熔断;4)修复配置文件;5)通过原生API测试定位网络或服务端问题。日志分析(openclaw logs)可快速识别HTTP状态码(如401/40

奶爸的编程之路,也就一周冷个三天 837

Mac下NDK R17编译FFmpeg 3.4.2 with libx264 for Android & iOS全平台版本

编译环境:Mac OS NDK R17FFmpeg 3.4.2下载编译脚本执行:chmod a+x build-ffmpeg-android.sh chmod a+x build-ffmpeg-patch.sh ./build-ffmpeg-android.sh

DevilLee的专栏 1274

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 视频转码需要权限,android 使用 ffmpeg 进行视频转码(一)

以下步骤在 Ubuntu 16.04.2 LTS 下完成第一步:到 ffmpeg 官网 下载 ffmpeg-2.6.9.tar.gz 包到 study/目录并解压,然后给文件夹读写权限。这里选择 2.6.9 版本,因为目前这个版本比较稳定>$mkdir study/>$cd study>$wget ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz&g...

weixin_36410516的博客 706

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android ffmegp for_编译FFmpeg for Android

配置编译环境编译环境 Linuxstep1:下载FFmpeg库和NDK库(1)我在usr目录下建立了一个ndk文件夹(2)然后进入ndk文件夹,FFmpeg官网找到下载地址,再在命令行输入 “wget https://www.ffmpeg.org/releases/ffmpeg-4.0.2.tar.gz”(3)解压文件夹 “tar -xzvf ffmpeg-4.0.2.tar.gz”(4)下...

weixin_33110431的博客 177

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【FFmpeg笔记】04-Win10编译ffmpeg4.2.1(For Windows)

上次在 Win10下编译了 Android版 FFmpeg(《13、Win10编译ffmpeg4.2.1(For Android)》) 这一次我们在 Win10下编译 Windows版本 FFmpeg,并且采用 Visual Studio 2019来开发,这样查看源码和调试都比较方便。 所需工具: 1、Windows 10 2、ffmpeg-4.2.1 3、msys2 4、Visual Studio2019 ffmpeg下载地址: https://ffmpeg.org/rel...

eieihihi的专栏 3826

linux编译fdk aac,使用NDK编译ffmpeg4.1+fdk-aac2.0

基本配置ubuntu18ffmpeg4.1.3fdk-aac2.0.0NDK r20b编译fdkaac静态库脚本#!/bin/bashNDK=/系统ndk路径/android-ndk-r20bHOST_TAG=linux-x86_64TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAGANDROID_LIB_PATH="$(pwd)/android"A...

weixin_30974667的博客 511

ffmpeg 编译 for android

主要介绍的是android端的编译流程 ndk 版本:r17c 下载地址:https://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip?hl=zh_cn ffmpeg 版本:4.3.1 下载地址:http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.xz ffmpeg为下载的源码,ndk是相对旧的ndk版本,适合网上太多数的编译,最新的试过一些都报错 ffmp

Timeshan的博客 4274

FFmpeg For Android (三) 移植main函数到安卓上执行ffmpeg命令

根据上一篇文章《FFmpeg For Android (二) Ubuntu下编译FFmpeg源码》我们熟悉了如何在Ubuntu下编译FFmpeg, 但我们却不知道有何用… 本篇将讲解 移植ffmpeg 的main函数到安卓上 直接执行ffmpeg命令 现在你将可以做很多有趣的app 比如 支持几乎全格式的视频、音频转换、剪切、合并、水印、混合、视频转gif 获取某一帧图片(则获取支持全格式视频的

没错, 我是东芝 8504

Mac下编译FFMPEG for Android

之前讲到了通过自定义的NDK交叉编译链来为编译FFMPEG做准备,自定义NDK编译工具链. 编译环境 操作系统:mac os NDK版本:android-ndk-r20 编译器:clang FFMPEG版本:4.2.1 编译脚本 整理了一个编译环境的脚本build.sh在FFMPEG目录下 #!/bin/sh # Android NDK sources and standalone tool...

Plx0303sunny的博客 1085

FFmpeg For Android (二) Ubuntu下编译FFmpeg源码

根据上一篇文章《FFmpeg For Android (一) 在Windows7下安装Ubuntu虚拟系统》安装并熟悉了Ubuntu 接下来开始编译FFmpeg 以下教程面向Android开发者1.下载相关文件首先去下载FFmpeg的源码 (国内在git下的话太慢了 经常中断)FFmpeg下载 http://www.ffmpeg.org/download.html我下载了ffmpeg-3.2.tar

没错, 我是东芝 2530
上一篇: 1. 初识FFmpeg
下一篇: 3. Android工程中使用FFmpeg的so库 -- JNI头文件的生成
ruanke77
博客等级 码龄18年 26粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ruanke77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值