Ubuntu虚拟机NDK编译ffmpeg

news2025/3/14 0:58:31

目录

  • 一、ffmpeg源码下载
    • 1、安装git(用于下载ffmpeg源码)
    • 2、创建源码目录,下载ffmpeg源码
  • 二、下载ubuntu对应的NDK,并解压到opt下
    • 1、下载并解压
    • 2、配置 ~/.bashrc
  • 三、源码编译、
    • 1、创建编译脚本
    • 2、脚本文件内容
    • 3、设置可执行权限并运行
    • 4、编译的结果在源码根目录下的android文件夹下
  • 四、编译过程中遇到的问题
    • 1、/opt/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang not found
    • 2、aarch64-linux-android21-nm not found
    • 3、aarch64-linux-android21-strip not found

一、ffmpeg源码下载

1、安装git(用于下载ffmpeg源码)

sudo apt update
sudo apt install git

2、创建源码目录,下载ffmpeg源码

mkdir ffmpeg_src
cd ffmpeg_src
git clone https://github.com/FFmpeg/FFmpeg.git

二、下载ubuntu对应的NDK,并解压到opt下

1、下载并解压

https://github.com/android/ndk/wiki/Unsupported-Downloads   // 下载地址
sudo unzip android-ndk-r21e-linux-x86_64.zip -d /opt/

2、配置 ~/.bashrc

export ANDROID_NDK_HOME=/opt/android-ndk-r21e
export PATH=$PATH:$ANDROID_NDK_HOME
source ~/.bashrc

三、源码编译、

1、创建编译脚本

touch build_android.sh
vim build_android.sh

2、脚本文件内容

#设置 NDK 路径
NDK=/opt/android-ndk-r25c
#设置目标平台和架构
API=21
ARCH=arm64
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAIN/sysroot
PREFIX=$(pwd)/android/$ARCH

#配置 FFmpeg
./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-programs \
    --disable-avdevice \
    --enable-avfilter \
    --enable-postproc \
    --enable-swresample \
    --enable-swscale \
    --disable-encoders \
    --disable-muxers \
    --disable-filters \
    --enable-jni \
    --enable-mediacodec \
    --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android$API- \
    --target-os=android \
    --arch=$ARCH \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic" \
    --extra-ldflags=""

#编译并安装
make clean
make -j4
make install

3、设置可执行权限并运行

sudo chmod+x build_android.sh
./build_android.sh

4、编译的结果在源码根目录下的android文件夹下

在这里插入图片描述

四、编译过程中遇到的问题

1、/opt/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang not found

解决办法,进入到toolchains/llvm/prebuilt/linux-x86_64/bin/中看看aarch64-linux-android21-clang是否存在,如果不存在,就找一个存在的版本,并修改build_android.sh 中的API的值

2、aarch64-linux-android21-nm not found

toolchains/llvm/prebuilt/linux-x86_64/bin中已经没有这个工具了,可以用llvm-nm代替。直接把llvm-nm拷贝一份,命名为aarch64-linux-android21-nm

3、aarch64-linux-android21-strip not found

toolchains/llvm/prebuilt/linux-x86_64/bin中已经没有这个工具了,可以用llvm-strip代替。直接把llvm-strip拷贝一份,命名为aarch64-linux-android21-strip

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2300303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习:k近邻

所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com),欢迎查看。 K 邻近算法(K-Nearest Neighbors,简称 KNN)是一种经典的机器学习算法,主要用于分类和回归任务…

讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。

在信息爆炸的时代,智能语音问答系统正以前所未有的速度融入我们的日常生活。然而,随着数据泄露事件的频发,用户对于隐私保护的需求日益增强。想象一下,一个无需联网、即可响应你所有问题的智能助手——这就是纯离线大模型智能语音…

Day4 25/2/17 MON

【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p4&v…

HTML【详解】input 标签

input 标签主要用于接收用户的输入,随 type 属性值的不同,变换其具体功能。 通用属性 属性属性值功能name字符串定义输入字段的名称,在表单提交时,服务器通过该名称来获取对应的值disabled布尔值禁用输入框,使其无法被…

Jvascript网页设计案例:通过js实现一款密码强度检测,适用于等保测评整改

本文目录 前言功能预览样式特点总结:1. 整体视觉风格2. 密码输入框设计3. 强度指示条4. 结果文本与原因说明 功能特点总结:1. 密码强度检测2. 实时反馈机制3. 详细原因说明4. 视觉提示5. 交互体验优化 密码强度检测逻辑Html代码Javascript代码 前言 能满…

用React实现一个登录界面

使用React来创建一个简单的登录表单。以下是一个基本的React登录界面示例: 1. 设置React项目 如果你还没有一个React项目,你可以使用Create React App来创建一个。按照之前的步骤安装Create React App,然后创建一个新项目。 2. 创建登录组…

图论:tarjan 算法求解强连通分量

题目描述 有一个 n n n 个点, m m m 条边的有向图,请求出这个图点数大于 1 1 1 的强连通分量个数。 输入格式 第一行为两个整数 n n n 和 m m m。 第二行至 m 1 m1 m1 行,每一行有两个整数 a a a 和 b b b,表示有一条…

Java:单例模式(Singleton Pattern)及实现方式

一、单例模式的概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问该实例,是 Java 中最简单的设计模式之一。该模式常用于需要全局唯一实例的场景,例如日志记录器、配置管理、线程池、数据库…

Python爬虫实战:股票分时数据抓取与存储 (1)

在金融数据分析中,股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况,从而为交易决策提供依据。然而,获取这些数据往往需要借助专业的金融数据平台,其成本较高。幸运的是,通过…

将图片base64编码后,数据转成图片

将图片数据进行base64编码后,可以在浏览器上查看图片,只需在前端加上data:image/png;base64,即可 在线工具: Base64转图片 - 加菲工具

天翼云910B部署DeepSeek蒸馏70B LLaMA模型实践总结

一、项目背景与目标 本文记录在天翼云昇腾910B服务器上部署DeepSeek 70B模型的全过程。该模型是基于LLaMA架构的知识蒸馏版本,模型大小约132GB。 1.1 硬件环境 - 服务器配置:天翼云910B服务器 - NPU:8昇腾910B (每卡64GB显存) - 系统内存&…

Jetson Agx Orin平台preferred_stride调试记录--1924x720图像异常

1.问题描述 硬件: AGX Orin 在Jetpack 5.0.1和Jetpack 5.0.2上测试验证 图像分辨率在1920x720和1024x1920下图像采集正常 但是当采集图像分辨率为1924x720视频时,图像输出异常 像素格式:yuv_uyvy16 gstreamer命令如下 gst-launch-1.0 v4l2src device=/dev/video0 ! …

DeepSeek冲击(含本地化部署实践)

DeepSeek无疑是春节档最火爆的话题,上线不足一月,其全球累计下载量已达4000万,反超ChatGPT成为全球增长最快的AI应用,并且完全开源。那么究竟DeepSeek有什么魔力,能够让大家趋之若鹜,他又将怎样改变世界AI格…

CF 144A.Arrival of the General(Java实现)

题目分析 一个n个身高数据,问最高的到最前面,最矮的到最后面的最短交换次数 思路分析 首先,如果数据有重复项,例如示例二中,最矮的数据就是最后一个出现的数据位置,最高的数据就是最先出现的数据位置&…

set的使用(c++)

STL里面已经为我们实现了两种红黑树,一种是存储关键字的set,另一种是存储双关键字的map,今天主要来了解set,无论是set还是map后面都跟一个multi,它们区别是set 不能存相同元素, multiset 可以存相同的元素&…

IDEA单元测试插件 SquareTest 延长试用期权限

SquareTest是一款强大的IDEA单元测试生成插件工具,具体使用方法就不过多介绍了,这里主要介绍变更试用期,方便大家使用 配置信息 我的电脑安装前提配置条件 IntelliJ IDEA 2023.2windows 系统 软件安装 IntelliJ IDEA 直接安装插件Squar…

25/2/17 <嵌入式笔记> 桌宠代码解析

这个寒假跟着做了一个开源的桌宠,我们来解析下代码,加深理解。 代码中有开源作者的名字。可以去B站搜着跟着做。 首先看下main代码 #include "stm32f10x.h" // Device header #include "Delay.h" #include &quo…

油田安全系统:守护能源生命线的坚固壁垒

油田安全系统:不可或缺的能源护盾 在能源领域,油田作为国家重要的能源供应基地,其安全生产的重要性不言而喻。油田安全系统犹如一道坚固的护盾,全方位守护着人员生命、企业财产以及生态环境,是油田平稳运行与可持续发展…

【故障处理】- 执行命令crsctl query crs xxx一直hang

【故障处理】- 执行命令crsctl query crs xxx一直hang 一、概述二、故障处理三、解决方法 一、概述 Oracle RAC环境中,遇到执行crsctl query crs xxx等相关命令不返回任何结果,一直hang在那里。系统下执行命令ps -ef |grep crsctl query crs softwarever…