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

这篇具有很好参考价值的文章主要介绍了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 可能是系统没有安装 

FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,ssl

尝试mac 终端 执行 

brew install libxml2

安装 libxml2

FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,ssl

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

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

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

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

FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,ssl

 交叉编译 遇到的问题。

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

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

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

FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,sslFFMPEG android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,ssl

我目前遇到的问题 都是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 android mac 编译 支持DASH/OPENSSL问题汇总,NDK,FFMPEG,macos,ssl

 

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

查找crash 崩溃可以按这个链接查看 Android NDK开发崩溃signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法_ 十 月的博客-CSDN博客大家遇到这种问题检查 是否空指针或者野指针文章来源地址https://www.toymoban.com/news/detail-599619.html

到了这里,关于FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg 静态库编译错误汇总

    今天使用静态库编译发现 了错误 这个只有在arm64 的编译上 存在 。armeabi-v7a不存在问题 ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol \\\'ff_cos_16384\\\'; recompile with -fPIC 解决方案列举汇总  有很多 大家如果有同样的问题可以一一测试。我这里只说明我的情况不一定适合

    2024年02月12日
    浏览(32)
  • mac编译ffmpeg

    https://trac.ffmpeg.org/wiki/CompilationGuide         - 使用homebrew安装dependency 其中,                 ​x264 encodes H.264 video. Use  --enable-gpl --enable-libx264 . ​fdk-aac encodes AAC audio. Use  --enable-libfdk-aac . ​libvpx is a VP8 and VP9 encoder. Use  --enable-libvpx . ​libvorbis encodes Vorbis audio . Requires ​

    2024年02月13日
    浏览(29)
  • 支持 flv+h265 的ffmpeg编译安装

    ffmpeg 官方分支没有支持flv+h265,国内金山云发了补丁版本,地址: 1. h264 2. h265 更多操作可参考:https://blog.csdn.net/xundh/article/details/100760114 3. 编译ffmpeg 如果不成功,可以尝试在最后添加: --pkg-config=\\\"pkg-config --static\\\" 4. 截屏命令示例 1. x264_bit_depth 未定义 原因:应该是x264的x26

    2023年04月12日
    浏览(27)
  • 自编译支持CUDA硬解的OPENCV和FFMPEG

    查阅opencv的官方文档,可看到有个cudacodec扩展,用他可方便的进行编解码。唯一麻烦的是需要自行编译opencv。 同时,为了考虑后续方便,顺手编译了FFMPEG,并将其与OPENCV绑定。 在之前的博文“鲲鹏主机+昇腾Atlas 300I Pro+龙蜥8.6 全国产化主机使用NPU推理YoloV5环境安装全过程”中

    2024年04月26日
    浏览(31)
  • Jetson Docker 编译 FFmpeg 支持硬解nvmpi和cuvid

    设备为NVIDIA Jetson Xavier NX,jetpack版本为 5.1.1 [L4T 35.3.1] 使用的docker镜像为nvcr.io/nvidia/l4t-ml:r35.2.1-py3,详见https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml 使用下列命令拉取镜像: 使用下列命令启动镜像: APT安装 或者按照下面的步骤从源码编译 git clone https://github.com/FFmpeg/nv-codec-he

    2024年02月08日
    浏览(28)
  • Android 交叉编译openssl 、libxml2静态库

    openssl: Android下openssl编译和使用(一)_安卓编译openssl 交叉编译 for arch in armeabi-v7a arm64-v8a-CSDN博客 libxml2: LIBXML2 2.9.11 build for Android_libxml2 android静态库_fredhurui的博客-CSDN博客

    2024年02月06日
    浏览(31)
  • 【FFmpeg】在 Mac OS 中编译 FFmpeg 源码 ① ( homebrew 安装 | 通过 gitee 源安装 homebrew | 安装 FFmpeg 编译所需的软件包 )

    在 Mac 系统中 homebrew 是一款 软件包管理工具 , 可以 轻松的 安装 / 卸载 / 更新 / 查看 / 搜索 软件包 , 可以简单方便地对软件包进行管理 , 无需用户 处理 复杂的依赖关系 问题 ; homebrew 是 基于 Git 的仓库 的 , 用户 跟踪 和 获取最新版本的软件包 ; homebrew 的 默认安装位置是 /u

    2024年04月13日
    浏览(47)
  • Android ffmpeg入门(1)—— 使用NDK交叉编译ffmpeg集成到Android项目

    最近在学习android NDK开发相关内容,借ffmpeg练练手。ffmpeg是做音视频方面功能的基础,后面会随着个人的学习更新一系列ffmpeg博客,防止自己遗忘。 这个系列博客主要目的是基于ffmpeg通过NDK开发的方式完成一个基本的视频播放器。 本篇博客主要实现了 ffmpeg编译 以及 引入 a

    2023年04月08日
    浏览(33)
  • FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

    ​ 《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2  交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。 登录Linux服务器(比如华为云的欧拉系统),依次执行下面的命令。 重

    2024年03月24日
    浏览(38)
  • Android编译ijkplayer和ffmpeg4.0

    最近编译了iOS的ijkplayer和android的ijkplayer,记录一下: 1、bilibili/ijkplayer地址:https://github.com/bilibili/ijkplayer 2、bilibili/ffmpeg地址:GitHub - bilibili/FFmpeg: mirror of git://git.videolan.org/ffmpeg.git 3、ffmpeg官方下载地址:Download FFmpeg ---------------------------------------------------------------- 默认按照

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包