码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ExoPlayer架构详解与源码分析(1)——前言


    系列文章目录

    ExoPlayer架构详解与源码分析(1)——前言
    ExoPlayer架构详解与源码分析(2)——Player
    ExoPlayer架构详解与源码分析(3)——Timeline
    ExoPlayer架构详解与源码分析(4)——整体架构
    ExoPlayer架构详解与源码分析(5)——MediaSource
    ExoPlayer架构详解与源码分析(6)——MediaPeriod
    ExoPlayer架构详解与源码分析(7)——SampleQueue
    ExoPlayer架构详解与源码分析(8)——Loader
    ExoPlayer架构详解与源码分析(9)——TsExtractor
    ExoPlayer架构详解与源码分析(10)——H264Reader


    目录

    • 系列文章目录
    • 前言
    • 为什么选择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项目结构还是比较庞大的,包含了主工程和相应的扩展库,这里我们主要关注主工程的源码,另外播放UI界面相关的代码不在讨论范围内。主要关注播放器的内部实现,大致分为以下几步来分析学习:

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

    本系列主要针对ExoPlayer已经有过使用,有了基本了解,想深入源码架构层面了解的读者。所以不会有ExoPlayer接入使用相关的内容,这部分建议读者去看ExoPlayer的官方文档。后续文章采用文字描述、图片、源码3者相结合的方法来解析ExoPlayer。其中源码会截取使用ExoPlayrer重要的部分,添加详细的的注释,所以注释也是文章的重要部分。


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

  • 相关阅读:
    基于新标记方案的实体和关系联合提取
    Docker安装Nginx教程步骤
    智慧林草信息化解决方案(森林防火应急指挥系统)
    推荐一款实用的用户画像工具--快鲸scrm
    linux-windows服务设置
    堆排序 ← 改编自《啊哈!算法》
    【业务架构】什么是价值实现——转型、项目和领导力
    冰冰学习笔记:哈希表与无序容器
    【OpenGL】五、光照
    es6 export和export default的区别
  • 原文地址:https://blog.csdn.net/blovecat/article/details/133277179
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号