exoplayer3 ffmpeg 扩展库编译 aar,导入集成
exoplayer3 ffmpeg 扩展库编译 aar,导入集成。
已经编译完成的aar:https://download.csdn.net/download/mhhyoucom/88086822
编译项目方法:
github下载项目:https://github.com/google/ExoPlayer
FFmpeg 模块提供 ,它使用 FFmpeg 进行解码 并且可以呈现以各种格式编码的音频。
要使用该模块,您需要克隆此 GitHub 项目并依赖其 本地模块。有关执行此操作的说明,请参阅顶级自述文件。该模块不是通过谷歌的Maven存储库提供的 。
此外,还需要手动构建 FFmpeg 库,以便 可以将 FFmpeg 二进制文件捆绑在 APK 中:
设置以下外壳变量:
cd “
FFMPEG_MODULE_PATH=“$(pwd)/extensions/ffmpeg/src/main”
下载安卓 NDK 并在 shell 变量中设置其位置。 此构建配置已在 NDK r21 上进行了测试。
NDK_PATH=“
设置主机平台(对于 Mac OS X,请使用“darwin-x86_64”):
HOST_PLATFORM=“linux-x86_64”
获取 FFmpeg 并签出相应的分支。我们不能保证 与所有版本的 FFmpeg 兼容。我们目前推荐版本 4.2:
cd “” &&
git clone git://source.ffmpeg.org/ffmpeg &&
cd ffmpeg &&
git checkout release/4.2 &&
FFMPEG_PATH=“$(pwd)”
配置要包含的解码器。请参阅支持的格式页面 可用解码器的详细信息,以及它们支持的格式。
ENABLED_DECODERS=(vorbis opus flac)
在 FFmpeg 模块目录中添加指向 FFmpeg 源代码的链接。jni
cd “KaTeX parse error: Expected 'EOF', got '&' at position 27: …ULE_PATH}/jni" &̲& \ ln -s "FFMPEG_PATH” ffmpeg
执行以构建 、 和 的 FFmpeg。如果需要构建,可以编辑脚本 不同的架构:build_ffmpeg.sharmeabi-v7aarm64-v8ax86x86_64
cd “KaTeX parse error: Expected 'EOF', got '&' at position 27: …ULE_PATH}/jni" &̲& \ ./build_ffm…{FFMPEG_MODULE_PATH}” “ N D K P A T H " " {NDK_PATH}" " NDKPATH""{HOST_PLATFORM}” “${ENABLED_DECODERS[@]}”
如何使用:
导入java类。
public class PluginRenderFactory extends DefaultRenderersFactory {/*** @param context A {@link Context}.*/public PluginRenderFactory(Context context) {super(context);}@Overrideprotected void buildAudioRenderers(Context context, int extensionRendererMode, MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, AudioSink audioSink, Handler eventHandler, AudioRendererEventListener eventListener, ArrayList<Renderer> out) {out.add(new FfmpegAudioRenderer(eventHandler, eventListener, audioSink));super.buildAudioRenderers(context, extensionRendererMode, mediaCodecSelector, enableDecoderFallback, audioSink, eventHandler, eventListener, out);}}
exoplayer初始化时候设置进入:
DefaultRenderersFactory renderersFactory = new PluginRenderFactory(context).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);mPlayer = new ExoPlayer.Builder(context).setRenderersFactory(renderersFactory).build();
编译集成完毕
相关文章:
exoplayer3 ffmpeg 扩展库编译 aar,导入集成
exoplayer3 ffmpeg 扩展库编译 aar,导入集成。 已经编译完成的aar:https://download.csdn.net/download/mhhyoucom/88086822 编译项目方法: github下载项目:https://github.com/google/ExoPlayer FFmpeg 模块提供 ,…...
Shell免交互
免交互 免交互就是:不需要人为控制就可以完成的自动化操作,自动化运维 Shell脚本和免交互是一个概念,是有两种写法。 Here Document 免交互 使用I/O(输入/输出)重定向的方式将命令的列表提供给交互式的程序或者命令cat read 是一种标准输入…...
设计模式之四:工厂模式
引言:除了使用new操作符之外,还有更多制造对象的方法。同时,实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类,要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码(if..elseif…...
斩获CVPR 2023竞赛2项冠军|美团街景理解中视觉分割技术的探索与应用
总第569篇 2023年 第021篇 视觉分割技术在街景理解中具有重要地位,同时也面临诸多挑战。美团街景理解团队经过长期探索,构建了一套兼顾精度与效率的分割技术体系,在应用中取得了显著效果。同时,相关技术斩获了CVPR 2023竞赛2项冠军…...
UE4/5C++多线程插件制作(十五、将模板统一,修改统一后的其他类,修改继承,修改返回类型等)
目录 MTPManageBase.h MTPAbandonable.h MTPAbandonableManage.h MTPThreadInterface.h MTPThreadAgendyManage.h MTPThreadTaskManage.h MTPManage.cpp MTPThreadTaskManage.h...
K8S系统监控:使用Metrics Server和Prometheus
Kubernetes 也提供了类似的linux top的命令,就是 kubectl top,不过默认情况下这个命令不会生效,必须要安装一个插件 Metrics Server 才可以。 Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标(metrics)的…...
数据结构基础之排序算法
在数据结构中,常见的排序算法有以下几种: 冒泡排序(Bubble Sort):通过比较相邻元素并交换它们的位置,每轮将最大(或最小)的元素冒泡到末尾,重复执行直到排序完成。 fun…...
Spark(37):Streaming DataFrame 和 Streaming DataSet 创建
目录 0. 相关文章链接 1. 概述 2. socket source 3. file source 3.1. 读取普通文件夹内的文件 3.2. 读取自动分区的文件夹内的文件 4. kafka source 4.1. 导入依赖 4.2. 以 Streaming 模式创建 Kafka 工作流 4.3. 通过 Batch 模式创建 Kafka 工作流 5. Rate Source…...
SpringBoot集成Thymeleaf
Spring Boot 集成 Thymeleaf 模板引擎 1、Thymeleaf 介绍 Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。 Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板,既可以在浏览器中正确显示的 HTML,也可以用作静态原型…...
算法练习(2):牛客在线编程03 二叉树
package jz.bm;import jz.TreeNode;import java.util.*;public class bm3 {/*** BM23 二叉树的前序遍历*/public int[] preorderTraversal (TreeNode root) {ArrayList<Integer> list new ArrayList<>();preOrder(root, list);int[] res new int[list.size()];fo…...
回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiLSTM时间卷积…...
Linux 系列 常见 快捷键总结
强制停止 Ctrl C 退出程序、退出登录 Ctrl D 等价 exit 查看历史命令 history !命令前缀,自动匹配上一个命令 (历史命令中:从最新——》最老 搜索) ctrl r 输入内去历史命令中检索 # 回车键可以直接执行 ctrl a 跳到命令开头 …...
OA系统构建排座
目录 一.排座的介绍,作用 1.排座介绍 A.前端实现 B.数据库实现 C.后端实现 2.排座作用 A.座位预订 B.座位安排 C. 实时座位状态显示 二.利用Layui实现排座 1.基础版(通过htmlcssjs实现) A.基础版源码(html): 2.进阶版 …...
微信小程序 居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局
微信小程序居中、居右、横纵布局 1、水平垂直居中(相对父类控件)方式一:水平垂直居中 父类控件: display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px //注意…...
【C++】总结2
文章目录 1.final和override关键字2.extern "C"的用法3.野指针和垂悬指针(悬空指针)4.指针指向的内存被释放是什么意思5.C和C的类型安全6.C中的重载、重写(覆盖)和隐藏的区别 1.final和override关键字 final和override是C11引入的关键字&…...
vue2项目中使用svg图标
在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后,页面上加载的不再是图片资源, 这对页面性能来说是个很大的提升,而且我们SVG文件比img要小的很多,放在项目中几乎不占用资源。 1、安装SVG依赖插件并配置加载器和路径 npm instal…...
阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用)
一、前言 阿里云盘自动每日签到,无需部署,无需服务器 执行思路:使用金山文档的每日定时任务,执行阿里云盘签到接口。 二、效果展示: 三、步骤: 1、进入金山文档网页版 金山文档官网:https:…...
Blazor前后端框架Known-V1.2.7
V1.2.7 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazor…...
工业边缘计算为什么?
在工厂环境中使用边缘计算并不新鲜。可编程逻辑控制器(PLC)、微控制器、服务器和PC进行本地数据处理,甚至是微型数据中心都是边缘技术,已经在工厂系统中存在了几十年。在车间里看到的看板系统,打卡系统,历史…...
Training-Time-Friendly Network for Real-Time Object Detection 论文学习
1. 解决了什么问题? 目前的目标检测器很少能做到快速训练、快速推理,并同时保持准确率。直觉上,推理越快的检测器应该训练也很快,但大多数的实时检测器反而需要更长的训练时间。准确率高的检测器大致可分为两类:推理时…...
Ollama搭配BGE-M3实战:手把手教你构建个人知识库问答系统(附完整代码)
Ollama与BGE-M3实战:从零构建智能知识库问答系统 你是否经常遇到这种情况——电脑里存了几百份技术文档、产品手册或会议纪要,急需查找某个具体问题的答案时,却不得不在成堆的文件中手动翻找?传统的关键词搜索往往返回大量无关结果…...
【超详细】前端必备:从0到1吃透JavaScript闭包,附真实项目避坑指南
文章目录第一章 从“变量生命周期”开始,重新理解作用域链1.1 一个让新手困惑的面试题:循环中的var与let1.2 作用域链的形成:函数定义位置决定了一切第二章 闭包的工程价值:从封装到模块化2.1 数据私有化:用闭包实现真…...
企业财务系统集成指南:如何用诺诺开放平台API搞定电子发票全流程(从签约到开票)
企业财务系统集成指南:诺诺开放平台电子发票全流程实战 当财务数字化转型成为企业降本增效的刚需,电子发票作为交易闭环的关键环节,其系统集成质量直接影响业务流畅度。本文将带您全景式拆解从商务对接到技术落地的完整链路,避开那…...
【科研必备】Elsevier Tracker:5分钟搞定学术投稿监控的终极解决方案
【科研必备】Elsevier Tracker:5分钟搞定学术投稿监控的终极解决方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 你是否也曾为了追踪Elsevier期刊的审稿状态而反复刷新页面?每天登录系统…...
别再手动下载了!教你用Python+Schedule库打造个人YouTube视频自动下载工具
Python自动化神器:用Schedule库打造智能视频下载系统 每次手动下载YouTube视频不仅耗时耗力,还容易错过更新。作为Python开发者,我们完全可以用代码解放双手,打造一个全自动的视频下载系统。今天要分享的这套方案,结合…...
Pixel Script Temple 数学建模辅助:将MATLAB算法思路转换为Python代码
Pixel Script Temple 数学建模辅助:将MATLAB算法思路转换为Python代码 1. 为什么需要MATLAB到Python的代码转换 在科研和工程领域,MATLAB长期以来一直是数学建模和科学计算的首选工具。但随着Python生态系统的成熟,越来越多的团队开始转向使…...
计算机毕业设计:Python汽车销售数据可视化与分析系统 Flask框架 requests爬虫 可视化 数据分析 大数据 机器学习 大模型(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
Pixie微型LED链式显示模块技术解析与嵌入式驱动开发
1. Pixie显示模块技术解析与嵌入式驱动开发指南Pixie 是一款面向嵌入式系统的链式可扩展微型LED点阵显示模块,由Lixie Labs LLC(Connor Nishijima)设计并开源。其核心价值在于以极小物理尺寸(20.6mm 34.7mm)集成双57共…...
告别漫长等待:用EDGS(3DGS优化版)快速重建你的3D场景(附Ubuntu 22.04+PyTorch 2.0配置)
极速三维重建实战:EDGS技术解析与Ubuntu高效配置指南 当传统3D高斯喷溅技术(3DGS)还在以小时为单位计算训练时间时,EDGS已经将这一过程压缩到令人惊讶的分钟级。这就像从绿皮火车换乘复兴号高铁的体验升级——不仅速度更快&#x…...
如何将微信聊天记忆转化为数字珍藏:WeChatMsg的数据主权革命
如何将微信聊天记忆转化为数字珍藏:WeChatMsg的数据主权革命 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...
