当前位置: 首页 > news >正文

车载音视频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

代码仓库:

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

接入

统一媒体播放器接入指南

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot系列:通过AOP+注解优雅实现操作日志记录
  • Kubernetes面试整理-Kubernetes如何实现水平扩展?
  • Spark核心技术架构
  • python 基础语法整理
  • 【VUE】9、VUE项目中使用VUEX完成状态管理
  • jmeter持续学习之---控制器
  • 在word中删除endnote参考文献之间的空行
  • Android系统上常见的性能优化工具
  • MongoDB自学笔记(一)
  • VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案
  • 安全加固:Eureka服务实例安全组配置全攻略
  • Everything搜索无法搜索到桌面的文件(无法检索C盘 或 特定路径的文件)
  • Python 爬虫:使用打码平台来识别各种验证码:
  • Linux容器时间隔离性测试
  • SQL进阶技巧:如何按照固定尺寸(固定区间)对数据进行打分类标签?
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • AHK 中 = 和 == 等比较运算符的用法
  • Android系统模拟器绘制实现概述
  • Android优雅地处理按钮重复点击
  • C++11: atomic 头文件
  • CSS 专业技巧
  • express.js的介绍及使用
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Linux gpio口使用方法
  • Lucene解析 - 基本概念
  • mysql innodb 索引使用指南
  • vue-router 实现分析
  • 对JS继承的一点思考
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于 Babel 的 npm 包最小化设置
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 离散点最小(凸)包围边界查找
  • 排序(1):冒泡排序
  • 前端面试之CSS3新特性
  • 区块链分支循环
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (02)vite环境变量配置
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (k8s中)docker netty OOM问题记录
  • (NSDate) 时间 (time )比较
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (剑指Offer)面试题34:丑数
  • (原)Matlab的svmtrain和svmclassify
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿