ExoPlayer架构详解与源码分析(1)——前言

目录

  • 前言
  • 为什么选择ExoPlayer
  • 学习计划


前言

之前通过几篇源码阅读横向的分析了ExoPlayer HLS相关的源码,那时候ExoPlayer还是独立的库,现在ExoPlayer 现在已经正式入编,合并到了Androidx 的media3中,而且该项目还在持续更新完善中,可见官方对其还是比较重视的。后面希望通过一些列文章基于media3 1.1.0版本源码(GitHub)纵向分析下ExoPlayer。

为什么选择ExoPlayer

Android媒体播放器那么多,为什么选择分析学习ExoPlayer呢,不是因为它性能有多好,其他C/C++写的媒体播放器性能高的大有人在,而恰恰因为实现的语言才选择ExoPlayer,ExoPlayer可以说是纯Java实现的,在语言性能先天劣势的情况下如何实现高性能的播放,这才是其中值得学习的地方。另外也得益于Java代码的实现,ExoPlayer达到高度的可定制化,可以说媒体从加载到解析播放整个过程,几乎每一个细节处理都可以实现自定义。对于Android开发来说这无异于提供了巨大的方便,无论是自定义功能实现、bug定位处理、性能优化,都在Java层。而要最大发挥ExoPlayer的这些优势,首先你得了解它是如何运作的。ExoPlayer中涉及到很多的设计思路和架构思想。无论从技术优势和学习的角度去考虑,ExoPlayer 都是值得去好好学习和研究的。

学习计划

ExoPlayer项目结构还是比较庞大的,包含了主工程和相应的扩展库,这里我们主要关注主工程的源码,另外播放界面相关的代码不在讨论范围内。主要关注播放器的内部实现,大致分为以下几步来分析学习:

  1. 首先会从全局看下Exo的整体设计目标和架构,还有些全局的概念介绍。
  2. 接着会分别单独分析Exo的4大组件MediaSource、Renderers、TrackSelector、LoadControl。
  3. 还会了解4大组件的组成和运作及其相关类,其中MediaSource将是重点对象。
  4. 最后通过将所有的组件联合起来,了解播放器是如何协调这些组件完成视频播放的。

版权声明 ©
本文为CSDN作者山雨楼原创文章
转载请注明出处
原创不易,觉得有用的话,收藏转发点赞支持

你可能感兴趣的:(Exoplayer,exoplayer,android,播放器)