FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总

一 下载源码 FFMPEG 

https://github.com/FFmpeg/FFmpeg/tree/release/4.3

二 编写脚本

支持https 就必须添加open SSL 的编译 具体可以查看我的另一个关于open SSL 的

然后我们配置的一些路径 涉及 ndk 的一定要查看你用的ndk 版本 是否存在这些路径这是第一步

然后如果支持dash 需要你加入

--enable-demuxer=dash

--enable-libxml2

三 遇到问题 汇总

在打包编译的过程中遇到了很多问题。。。感觉上是一步一个坎。不过坚持下来感觉还是很有收获

  • 爆出一些 在你的 什么系统目录中创建文件 但是没权限的问题。

这些问题一般是 NDK 或者 tool chain。等等这些 配置路径 有问题。 才会在你的usr/local/创建文件。不然都是在你的输出目录中创建 的。  

  • 提示没有libxml-2.0 可能是系统没有安装 

尝试mac 终端 执行 

brew install libxml2

安装 libxml2

发现它输出了提示 需要配置这些才能找到 libxml2 

重新执行脚本编译 还是提示不存在 。继续检查问题

最后还是重新做了libxml2库的交叉编译

libxml2 做完交叉编译。后面更新了 脚本中libxml2的 头文件和 lib 库 位置  解决了问题

 交叉编译 遇到的问题。

  • python 库找不到。 我自己电脑重新装了个python 。
  • FFmpeg 编译提示 libxml2 使用了一些 libm 的 函数。提示libm 找不到。于是 在ffmpeg
    的脚本中增加了 -lm 配置。提示交叉编译去寻找libm库 这个 ndk 中有 
  •    --extra-ldflags “... -lm”

最后ffmpeg 终于打出来了  运行时又遇到问题

  • 提示找不到 这些库的函数 但是其实打出来的so 是存在这些函数的。

我目前遇到的问题 都是libavdevice  和 libswresample.so 这两个库 中的函数找不到 其他的库没有问题。

解决方案直接使用extern"C"{} 包含用到的这两个库的头文件解决 运行 顺利!!!

由于使用FFPlay 作为解码 但是FFPlay 依赖了SDL2 于是 又是长途跋涉 编译SDL2 。移植到Android 
一开始 不知道怎么用。看了网上教程 成功打出了SO 。但是运行时又发现了错误 
       A  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A  Cause: null pointer dereference
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x0  0000000000000000  x1  000000718cce7f2c  x2  0000000000000001  x3  0000000000000046
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x4  0000000000000021  x5  00000000095f2afe  x6  0000000000000010  x7  7f7f7f7f7f7f7f7f
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x8  2153fb133faec1e2  x9  2153fb133faec1e2  x10 0000000000000001  x11 0000000000000000
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x12 0000006e0b5f9eb0  x13 000000000000001b  x14 0000000000000000  x15 000023fea22b16d4
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x16 00000071967f8740  x17 0000007199d362f4  x18 0000006df69c0000  x19 0000006dfdff7000
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x20 0000006dfdff7000  x21 0000006dfdff7000  x22 0000000000007d8b  x23 0000000000007d8b
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x24 0000006e0b5fbcb0  x25 0000006e0b5fbcb0  x26 0000006e0b5fbff8  x27 00000000000fc000
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      x28 0000006e0b503000  x29 0000006e0b5fb6a0
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A      lr  0000006dfdede0c4  sp  0000006e0b5fb680  pc  0000006dfdede0c4  pst 0000000060001000
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A  backtrace:
2023-07-14 14:34:12.585 32214-32214 DEBUG                   crash_dump64                         A        #00 pc 00000000000430c4  /data/app/~~gIZm42M6DxNHr3fUBYvqEQ==/com.example.myapplication-_P36bPxgYfbo3B-q6_6iKg==/lib/arm64/libSDL2.so (Android_JNI_GetManifestEnvironmentVariables+56) (BuildId: f86a91bd5bd4523559afe28c1d3e7f863ec43bb5)
 


提示SDL 中 so NULLPtr ,结果去源码看了下。这里空指针是没有拿到javaVm 对象。
解决方案 发现需要systemloadlibrary. sdl 的库。因为sdl 通过jnionload 获取javaVm 对象。
于是 System.loadLibrary("SDL2")

RUN 发现又出幺蛾子了。提示找不到SDLActvity  waht happened ??? ??  难道我还的把源码里的java 文件放我项目里吗? 
最后妥协了 把SDL 的java 文件放到我的项目里 

RUN 发现又出问题了。一堆什么系统native 库报错。最后尝试调用了  

SDL.setupJNI()

解决问题。这次RUN 出来了。

附加:

 

发现 ffmpeg  avformat_open_input  crash ? 这是什么原因 。

查找crash 崩溃可以按这个链接查看 Android NDK开发崩溃signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法_ 十 月的博客-CSDN博客大家遇到这种问题检查 是否空指针或者野指针

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

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

相关文章

python爬虫入门

基础回顾 使用函数, 先导入, 直接点方法名使用 import math m math.log10(100) print(m)python 交互模式 input输入示例 age int(input("请输入年龄")) age 1 print(age)if else 的使用 和java一样, 只是不加括号, else if 阉割成了 elif 与或非 java : &am…

No3: 学习过程中故障成长积累

文章目录 故障积累1、编码错误导致 故障积累1、编码错误导致

5.2 Bootstrap 过渡效果(Transition)插件

文章目录 Bootstrap 过渡效果(Transition)插件使用案例 Bootstrap 过渡效果(Transition)插件 过渡效果(Transition)插件提供了简单的过渡效果。 注意:如果您想要单独引用该插件的功能&#xff0…

【ACM】—蓝桥杯大一暑期集训Day5

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前正在学习C/C、Java、算法等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&#xff…

Qt6 Qt Quick UI原型学习QML第五篇

文章目录 效果QML语法父文件 MyQML.qmlQML语法子文件 TLineEditV1.qmlQML语法子文件 TTextEdit.qml 效果 QML语法父文件 MyQML.qml import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12Window {id: windowvisible: truewidth: 600height: 600title:…

Linux系统进程概念详解

这里写目录标题 冯诺依曼体系结构操作系统(Operator System)1.概念2.目的3.管理4.系统调用和库函数概念 进程1.概念2.描述进程-PCB3.查看进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork 进程状态1.Linux内核源代码2.进程状态查看 进程优先级1.基本概念2.查看系统…

投个 3D 冰壶,上班玩一玩

本篇文章将介绍如何使用物理引擎和图扑 3D 可视化技术来呈现冰壶运动的模拟。 Oimo.js 物理引擎 Oimo.js 是一个轻量级的物理引擎,它使用 JavaScript 语言编写,并且基于 OimoPhysics 引擎进行了改进和优化。Oimo.js 核心库只有 150K ,专门用…

5G的发展过程

目录 1.什么是5G 2.5G与4G的区别 3.5G的应用领域 4.5G给人类带来的福利 5.5G未来的发展趋势 1.什么是5G 5G技术是第五代移动通信技术,它是对之前的2G、3G和4G技术的升级和革新。5G技术具有更高的数据传输速度、更低的延迟和更大的网络容量,为人们提供…

Java-API简析_java.net.InetSocketAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131870760 出自【进步*于辰的博客】 因为我发现目前,我对Java-API的学习意识比较薄弱…

办公软件ppt的制作

毕业找工作太难了,赶紧多学点什么东西吧,今天开始办公软件ppt的制作学习。 本文以WPS作为默认办公软件,问为什么不是PowerPoint,问就是没钱买不起,绝对不是不会破解的原因。 一.认识软件 在快捷工具栏中顾名思义就是一…

微服务基础理论

微服务简介 微服务Microservices之父,马丁.福勒,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。但通在其…

Express 框架的基本操作

目录 1、应用生成器 2、基本路由 2.1、在跟路由下配置 GET请求,返回对应相应内容。 2.2、在跟路由下配置 POST请求,返回对应相应内容。 2.3、在跟路由下配置 PUT请求,返回对应相应内容。 2.4、在根路由下配置DELETE请求,返回对…

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念: 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

华为鲲鹏920 aarch64 版本 Ambari HDP 下载地址

声明:为有效缓解各位同行兄弟们的痛,特推出此文 本文能够适配兼容 华为鲲鹏920 aarch64 版本,仅限 CentOS7、openEuler20.03-LTS 操作系统 以下是详细下载地址 1、CentOS7 aarch64版本 CentOS7 aarch64 https://mirrors.huaweicloud.com/…

《零基础入门学习Python》第054讲:论一只爬虫的自我修养2:实战

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 今天我们决定在实战中来进行学习,会举两个例子,第一个例子是我们会下载一只猫,第二个例子是我们用Python来模拟浏览器通过在线的…

MySQL8.0索引新特性

文章目录 1 支持降序索引2 隐藏索引 1 支持降序索引 举例:分别在MySQL 5.7版本和MySQL 8.0版本中创建数据表ts1,结果如下: CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc) );在MySQL 5.7版本中查看数据表ts1的结构,从结…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版(以下简称为IDEA 2023),学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的,版本为Apache Mav…

认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发

目录 第一章、认识主被动无人机遥感数据 第二章、预处理无人机遥感数据 第三章、定量估算农林植被关键性状 第四章、期刊论文插图精细制作与Appdesigner应用开发 更多推荐 遥感技术作为一种空间大数据手段,能够从多时、多维、多地等角度,获取大量的…

【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】

目录 1.排序的概念及其运用1.1排序的概念1.2排序运用​​​​​​​​​​​​​​​​​​​​​1.3常见的七大排序 ​​2.直接插入排序2.1基本思想​​2.2直接插入排序2.3动图助解2.4直接插入排序源码​2.5直接插入排序的特性总结 ​​3.希尔排序( 缩小增量排序 )​​3.1希尔…

STM32CubeMX X-CUBE-AI更新模型

如题,我采用一个采用stm32CUBEMX生成了工程,工程里面使用了X-CUBE-AI对自定义的模型进行模型压缩,但是我经常要更新模型,那么怎样更新模型了。这里开博客记录一下。 如图所示,为基于STM32CUBEMX生成的工程文件目录结构…