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

代码仓库:

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

接入

统一媒体播放器接入指南

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 22:34:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 22:34:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 22:34:04       58 阅读
  4. Python语言-面向对象

    2024-07-15 22:34:04       69 阅读

热门阅读

  1. Android12 OTA全包升级清除用户数据

    2024-07-15 22:34:04       20 阅读
  2. 写在2024美洲杯之后

    2024-07-15 22:34:04       21 阅读
  3. AI艺术革命:使用神经网络生成创新艺术作品

    2024-07-15 22:34:04       19 阅读
  4. JUC练习——线程安全的计数器

    2024-07-15 22:34:04       20 阅读
  5. vue3~

    vue3~

    2024-07-15 22:34:04      18 阅读
  6. QSqlQuery::value: not positioned on a valid record

    2024-07-15 22:34:04       22 阅读
  7. 基于金碟云星空实现硬件ECN校验

    2024-07-15 22:34:04       18 阅读
  8. ObjectiveC 内存管理

    2024-07-15 22:34:04       21 阅读
  9. 7.15作业

    2024-07-15 22:34:04       23 阅读
  10. 【C++】继承与多态相关11道面试题整理

    2024-07-15 22:34:04       20 阅读