Jetpack Media3 简介

Jetpack Media3 是媒体库的新归宿,它使 Android 应用能够展示丰富的音频和视觉体验。Media3 提供了一个简单的架构,具有强大的自定义、可靠性和基于设备能力的优化,从而抽象化了碎片化带来的复杂性。

本文档介绍了使用 Media3 实现播放和编辑用例的关键 API。

播放组件

Media3 为播放用例提供了几个关键组件。如果您曾使用过以前的 Android 媒体库,那么构成这些组件的类您会很熟悉。

下图演示了这些组件在典型应用中如何协同工作。

The different components of a media app that uses Media3 connect
  together in several simple ways owing to their sharing of interfaces
   and classes.
图 1:媒体应用组件

媒体播放器

媒体播放器是您应用的一个组件,它允许播放媒体文件。在 Media3 中,您将找到

说明 实现说明
Player Player 是一个接口,定义了媒体播放器的传统高级功能,例如播放、暂停和查找的能力。 在 Media3 中,Player 接口是一个通用 API,由多个组件实现或使用,例如 MediaSessionMediaController
ExoPlayer ExoPlayer 是 Media3 中 Player 接口的默认实现。

详细了解 Media3 ExoPlayer

媒体会话

媒体会话提供了一种与媒体播放器交互的通用方式。这使应用能够向外部源宣传媒体播放,并接收来自外部源的播放控制请求。在 Media3 中,您将找到

说明 实现说明
MediaSession 媒体会话使您的应用能够与音频或视频播放器交互。它们对外宣传媒体播放,并接收来自外部源的播放命令。 在 Media3 中,MediaSession 需要一个 Player 来执行命令并获取当前状态。
MediaSessionService MediaSessionService 将媒体会话及其关联的播放器保存在一个与应用主 Activity 分开的服务中,以方便后台播放。
MediaController MediaController 类通常用于从应用外部发送命令,例如,从其他应用或系统本身。命令会发送到关联 MediaSession 的底层 Player MediaController 类实现了 Player 接口,但在调用方法时,MediaController 会将命令发送到连接的 MediaSession。Google 助理等客户端应用可以使用 MediaController 来控制连接会话中的播放。
MediaLibraryService MediaLibraryService 类似于 MediaSessionService,但它包含额外的 API,因此您可以将内容库提供给客户端应用。
MediaBrowser MediaBrowser 类允许用户浏览媒体应用的内容库并选择要播放的项。 MediaBrowser 类同时实现了 MediaControllerPlayer 接口。与 MediaController 类似,Android Auto 等客户端应用通常会实现 MediaBrowser

详细了解 Media3 MediaSession

界面组件

Media3 提供了用于观看视频和控制播放的默认界面组件。

说明 实现说明
PlayerView 用于显示视频和播放控件的默认 View 连接到 ExoPlayerMediaController 或任何其他自定义 Player
PlayerSurface 一个 Composable,表示用于显示视频的专用绘图 Surface 连接到任何 Player,但不包含播放控件。仅用于渲染帧,并且可以根据各种 ContentScale 类型进行大小调整。此组件和许多其他可组合组件可在Compose UI 实用程序中找到。

详细了解 Media3 UI

编辑组件

Media3 包含了用于媒体编辑用例的 Transformer API,其中包括

  • 音频和视频处理,例如添加滤镜和效果
  • 处理特殊格式,例如 HDR 视频和慢动作视频
  • 合成,例如组合多个输入文件
  • 将最终输出导出到文件
说明 实现说明
Transformer 使用 Transformer 类启动和停止转换,并检查正在运行的转换的进度更新。
Effects 一个 Effects 对象是应用于媒体项的音频和视频效果的集合。
EditedMediaItem 一个 EditedMediaItem 表示要处理的媒体项及其要应用的编辑。 您可以使用 ExoPlayer 在开始导出过程之前预览添加到媒体项的效果。

详细了解 Media3 Transformer

介绍视频

观看下方视频,了解构建 Media3 的工程师对 Media3 的介绍。