车载音视频MediaPlayer优化方案

媒体播放现状

从手机到车载,在很多地方还是有很大的不同。针对多媒体的场景Android车机目前大部分结构大致结构如下图:

从以上图看出的问题:

  1. 各个音视频APP单独实现播控界面,播放链路不一致,使用的底层播放器和音频焦点管理逻辑也不一样,一方面导致界面显示和交互的一致性较差,另外播控相关的碎片化bug较多,各个模块的开发能力复用较少;
  2. 每个模块都要单独接入媒体中心,新应用适配有一定接入联调成本,且存在连接时序、重连上的稳定性问题;
  3. RSD播控需要集成每个模块提供的aar开发包,各模块间耦合和复用较差,部分没有提供aar的比如carplay、在线音乐这些rsd的播控功能缺失。

播放器优化构想

目标:

  1. 统一的媒体播放架构,包括播控UI、会话管理、播放接口、音频焦点部分。每个播放器的差异只存在于媒体列表和最终的播放接口;
  2. 逐步去除媒体中心模块作为媒体同步的核心,改用基于Android原生mediasession,通过mediasession解耦各模块,同时提高复用和稳定性。
  3. 第三方媒体播放应用,实现原生的mediasession无需其他适配,即可满足方控、Mini播放器、PSD、RSD的同步播控功能。

最终如下图所示:

具体实现说明

  • 媒体播放库选用AndroidX中的Media3,各个媒体库的对比见:Media3调研 。

  • 架构上可以分为client/server端,其中server端可以支持多进程;

  • 架构上也是一个分层的,分为UI、mediacontroller、sessionservice、player这4层,UI和mediacontroller在client端,sessionservice和player在server端;

主要类图如下:

原生media3 player接口描述:https://developer.android.com/reference/androidx/media3/common/Player

代码仓库:

评论区留下联系方式,会把源码和相关资料发给你

接入

统一媒体播放器接入指南

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

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

相关文章

基于Spring Boot的高校后勤餐饮管理系统

1 项目介绍 1.1 研究背景 “互联网”时代的到来,既给高校后勤管理发展带来了机遇,也带来了更大的挑战。信息化应用已经开始普及,传统的高校后勤餐饮管理模式往往存在着效率低下、信息不透明、资源浪费等问题,已经难以满足现代高…

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏 一、魔塔小游戏介绍1.1 魔塔小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apa…

STM32第十八课:SPIFlash

目录 需求一、SPI概要二、SPI配置1.开时钟2.配置IO3.配置&使能SPI 三、FLash操作函数1.SPI发送数据2.FLASH写使能3.FLASH等待操作完成4.FLASH页写操作5.FLASH读操作6.FLASH扇区擦除 四、需求实现 需求 通过SPI控制FLash进行数据的保存和删除。 一、SPI概要 在我们使用UA…

【python】OpenCV—European Article Number

参考学习来自:OpenCV基础(25)条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码(European Article Number)的缩写,是一种广泛使用的条形码标准,特别是在超级市场和其它零售业中。…

OpenCV解决验证码(数字和字母)识别(Python)

文章目录 前言一、准备验证码图片 前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库。它支持Windows、Linux、Mac OS、Android和iOS等多个操作系统,提供了丰富的图像处理和计算机视觉功能,包括但…

RPC与服务的注册发现

文章目录 1. 什么是远程过程调用(RPC)?2. RPC的流程3. RPC实践4. RPC与REST的区别4.1 RPC与REST的相似之处4.2 RPC与REST的架构原则4.3 RPC与REST的主要区别 5. RPC与服务发现5.1 以zookeeper为服务注册中心5.2 以etcd为服务注册中心 6. 小结参考 1. 什么是远程过程调用(RPC)?…

(自用)网络编程

OSI七层协议模型 (open system interconnection) 应用层————为应用数据提供服务 表示层————数据格式转化,数据加密 会话层————建立、维护和管理会话 传输层————建立、维护和管理端到端的链接,控制数据传输的方式 网络层————数据…

手机删除的文件能恢复吗?删除不等于永别,3个技巧助你找回

安卓手机中的文件,就像是数字世界里的繁星,记录着我们的点点滴滴。然而,有时我们可能会不小心删除了某些重要的文件,让我们感到惋惜和困惑。删除的文件能恢复吗?别担心,删除并不等于永别,我们也…

CentOS 停服后,服务器 OS 路在何方?

2024 年 6 月 30 日,CentOS Linux 7 终止其生命周期(EOL),至此 CentOS 全系列版本也已停止维护,属于 CentOS 的时代彻底终结。CentOS 停止维护后,用户将无法获得包括问题修复和功能更新在内的任何软件维护和…

小程序里面使用vant ui中的vant-field组件,如何使得输入框自动获取焦点

//.wxml <van-fieldmodel:value"{{ userName }}"placeholder"请输入学号"focus"{{focusUserName}}"/>// .js this.setData({focusUserName: true});vant-field

MSVC2017+Qt 打包

在环境变量下配置好 QT 和 MSVC 的路径 相关搜索&#xff1a; 找不到msvcp140.dll 1.搜索 Qt 选择在编译器路径下打开 2. Windeployqt 生成打包&#xff0c;正常情况下生成 VC 相关package&#xff0c; 即 msvcp140.dll 等MSVC 相关 但是lz尝试没有生成 解决办法 先将生成…

数据库作业d8

要求&#xff1a; 一备份 1 mysqldump -u root -p booksDB > booksDB_all_tables.sql 2 mysqldump -u root -p booksDB books > booksDB_books_table.sql 3 mysqldump -u root -p --databases booksDB test > booksDB_and_test_databases.sql 4 mysql -u roo…

MySQL 中的几种锁

MySQL 中的锁 #按锁粒度如何划分? 按锁粒度划分的话&#xff0c;MySQL 的锁有&#xff1a; 表锁&#xff1a;开销小&#xff0c;加锁快&#xff1b;锁定力度大&#xff0c;发生锁冲突概率高&#xff0c;并发度最低;不会出现死锁。行锁&#xff1a;开销大&#xff0c;加锁慢…

电脑压缩软件哪个好?WinRAR、7-Zip、Bandizip 还是360压缩

文件压缩软件已成为我们日常工作中不可或缺的一部分&#xff0c;它不仅能够帮助我们节省存储空间&#xff0c;还能提高文件传输效率。本文简鹿办公小编将对四款主流的电脑压缩软件进行对比&#xff0c;它们分别是 WinRAR、7-Zip、Bandizip 和 360 压缩。 一、WinRAR WinRAR 是…

Qt中文个数奇数时出现问号解决

Qt中文个数奇数时出现问号解决 目录 Qt中文个数奇数时出现问号解决问题背景问题场景解决方案 问题背景 最近在开发一个小工具&#xff0c;涉及到一些中文注释自动打印&#xff0c;于是摸索如何把代码里面的中文输出到csv文件中&#xff0c;出现了乱码&#xff0c;按照网上的攻…

vue2-Django3-iframe解决方案,处理安全策略,事件拦截,处理iframe重载等

目录 简介 实现iframe 后端安全策略 通过Ngnix代理实现SAMEORIGIN iframe的事件拦截&#xff0c;自定义处理 iframe的状态保持&#xff08;解决vue中iframe重载&#xff09; 解决方法 简介 Iframe&#xff08;内联框架&#xff09;是一种HTML元素&#xff0c;用于在网页…

周鸿祎为什么建议Java、前端、大数据、PHP开发都要学一下大模型?_ai大模型全栈工程师跟java有关吗

ChatGPT的出现在全球掀起了AI大模型的浪潮&#xff0c;2023年可以被称为AI元年&#xff0c;AI大模型以一种野蛮的方式&#xff0c;闯入你我的生活之中。 从问答对话到辅助编程&#xff0c;从图画解析到自主创作&#xff0c;AI所展现出来的能力&#xff0c;超出了多数人的预料&…

智慧公厕系统实现人性化与节能化的完美结合

在当今社会&#xff0c;科技的飞速发展正不断改变着我们的生活方式&#xff0c;公厕也不例外。智慧公厕系统的出现&#xff0c;不仅提升了人们的使用体验&#xff0c;更实现了人性化与节能化的完美结合&#xff0c;为城市公共服务带来了全新的变革。 一、人性化&#xff0c;是智…

echarts 实现水利计算模型-雨量,流量,时间分割线

需求背景解决效果ISQQW代码地址index.vue 需求背景 实现水利计算模型-雨量&#xff0c;流量&#xff0c;时间分割线 解决效果 ISQQW代码地址 链接 index.vue <!--/** * author: liuk * date: 2024/06/13 * describe: 洪水预报结果图表 */--> <template><di…

算法篇 滑动窗口 leetcode 长度最小的子数组

长度最小的子数组 1. 题目描述2. 算法图分析2.1 暴力图解2.2 滑动窗口图解 3. 代码演示 1. 题目描述 2. 算法图分析 2.1 暴力图解 2.2 滑动窗口图解 3. 代码演示