首页 > 其他分享 >ExoPlayer播放流程解析

ExoPlayer播放流程解析

时间:2023-12-13 15:37:05浏览次数:37  
标签:Extractor 解析 媒体 音频 MediaPeriod DataSource ExoPlayer 播放

ExoPlayer的播放解析流程如下(以音频为例):

image

注意:
1、LoadControl.shouldContinueLoading控制是否继续加载。
2、调用setPlayWhenReady(true)其实最终也是调用了AudioTrack的play()

各个部分的作用:

  1. Extractor(解析器):负责从媒体容器中提取音频和视频数据,如MP4、FLV等。它将输入的媒体文件解析成可供播放器使用的媒体样本。

  2. DataSource(数据源):负责提供给解析器所需的数据。它可以从各种来源获取数据,例如网络、本地文件等。DataSource也负责处理数据缓存和读取速度控制。

  3. MediaSource(媒体源):将Extractor和DataSource结合起来,代表要播放的媒体资源。它知道如何创建Extractor,并通过DataSource提供数据给Extractor。

  4. MediaPeriod(媒体周期):表示整个媒体资源中连续的一部分时间范围,通常对应于一个音频或视频轨道。一个MediaPeriod包含一个或多个SampleQueue。

  5. Timeline(时间线):描述了整个媒体资源的结构和时序信息。它告诉播放器媒体资源由多少个MediaPeriod组成以及每个MediaPeriod在时间上相对于其他MediaPeriod的位置。

  6. Window(窗口):代表当前正在播放或即将播放的MediaPeriod以及与之相关联的其他信息,如DrmSession、窗口索引等。

  7. Cache(缓存):用于将已下载的媒体数据缓存到本地磁盘上,以便下次播放时可以快速访问。Cache在DataSource和网络之间起到了缓冲的作用,提供了离线播放和快速加载的功能。

  8. Renderer(渲染器):负责将解码后的音频或视频样本渲染到设备屏幕上进行实际播放。每个轨道都对应一个Renderer。

  9. Track(轨道):代表媒体资源中的一条音频或视频流。可以有多个轨道,每个轨道由一个Extractor处理并传递给相应的Renderer进行渲染。

  10. Decoder(解码器):用于将压缩的音频或视频样本解码成原始格式。每个轨道都需要对应的解码器来处理样本。

  11. SampleQueue(样本队列):用于管理接收到的媒体样本,并按时间顺序进行排列和存储,以便Renderer可以从中获取要渲染的样本。

引用网上的架构图

image

若有不对请指正。

转载请标明出处: https://www.cnblogs.com/tangZH/p/17899131.html

标签:Extractor,解析,媒体,音频,MediaPeriod,DataSource,ExoPlayer,播放
From: https://www.cnblogs.com/tangZH/p/17899131.html

相关文章

  • 羚通视频智能分析平台烟火检测与烟火识别算法的深度解析
    随着科技的不断发展,人工智能技术在各个领域的应用越来越广泛。其中,视频智能分析技术以其高效、准确的特点,被广泛应用于安全防护、环境监测等多个领域。今天,我们将重点介绍羚通视频智能分析平台中的烟火检测、烟火识别算法。一、烟火检测的重要性烟火检测是公共安全的重要环节,它能......
  • Vue后台项目开发必备:全面解析分辨率适配与网页缩放技巧!
    1.各屏幕分辨率下适配展示首先给大家展示一下我的屏幕分辨率兼容效果,方便大家来判断我的适配方案是否可行正常1920*1080100%1920*1080150%1440*900100%1440*900150%2.屏幕分辨率适配方案这里就不再过多举例了,通过这四张图可以看出来页面布局并没有受到过多的影响,所以直接上代......
  • Vue后台项目开发必备:全面解析分辨率适配与网页缩放技巧!
    1.各屏幕分辨率下适配展示首先给大家展示一下我的屏幕分辨率兼容效果,方便大家来判断我的适配方案是否可行正常1920*1080100%1920*1080150%1440*900100%1440*900150%2.屏幕分辨率适配方案这里就不再过多举例了,通过这四张图可以看出来页面布局并没有受到过多的影响,所以直接上代......
  • 汽配CRM好用吗?功能价格全解析
      随着汽车行业的快速发展,汽车配件市场也呈现出蓬勃的增长态势。然而,随之而来的是市场竞争的加剧和管理难题的增多。为了应对这些挑战,汽配行业也引入了CRM客户管理系统。本文将简要向您介绍,汽配CRM是什么,有什么功能、作用及其价格。什么是汽配CRM?汽配CRM是一种专门为汽车配......
  • CRM系统帮助企业增长的秘诀:CRM功能解析
      在日趋严峻的商业环境下,企业需要寻求模式创新来实现持续增长。而这需要企业管理者对企业信息有着全方位的了解。在这种情况下,CRM客户管理系统成为了企业管理和发展的重要工具。本文告诉您,CRM系统为何能帮助企业实现持续增长。一、助力客户管理CRM系统可以帮助企业提高客户......
  • 家电CRM是什么样的?系统功能解析
      CRM系统管理软件出现以来按照企业规模和行业划分出现了不同的细分类型,家电CRM就是其中一种。本文将简要向您介绍,家电CRM是什么,有什么功能、作用及其价格。一、家电CRM概念家电CRM是客户管理软件供应商为家电行业量身打造的一种客户关系管理系统。它是一种企业管理软件,旨......
  • 同城双活的必修课 - 落地经验与关键挑战解析
    1.同城双活是什么同城双活是一种容灾架构的设计模式,主要用于提高系统的可用性和容错性。它通常涉及在同一个城市内建立两个数据中心(机房),这两个数据中心同时对外提供服务,实现了高可用性和冗余。  关键特点和优势包括:双活部署:两个数据中心都处于活跃状态,同时处理用户请求......
  • 故障解析丨导入字符串NULL导致主从报错
    1.背景概述目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行loaddata的功能,能够加速数据的导入,因此决定使用selectintooutfile和loaddata的方式进行数据的迁移;在数据导入完成后进行数据同步,从库发生报错1032找不到记录,但......
  • 360度解析Android动画:哪个更引人注目?
    介绍动画是Android应用中不可或缺的一部分,它可以让应用更加生动、有趣,还可以提升用户体验。Android提供了多种动画实现方式,在本文中,我们将深入研究Android动画的方方面面。从基本的View动画和属性动画开始。我们将介绍高级动画技巧,包括使用自定义插值器、实现复杂效果,以及性能优化......
  • 笔记本睡眠结束后耳机没声音/音频无法播放
    可能原因睡眠结束后WindowsAudio服务没有启动[1].解决思路参考[2]编写bat在电脑睡眠结束后重启该服务,参考[3]让其自动运行.具体步骤编写bat在服务中找到WindowsAudio服务,其属性中复制服务名称编写如下程序以bat为后缀、UTF-8为编码保存实现自动重启按下Win+R,输入t......