Jetpack Media3 简介

Jetpack Media3 是面向媒体库的新平台,可让 Android 应用呈现丰富的音频和视觉体验。Media3 提供了一种简单的架构,可根据设备功能提供强大的自定义、可靠性和优化功能,从而抽象出分片带来的复杂性。

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

播放组件

Media3 为播放用例提供了多个关键组件。如果您使用过之前的 Android 媒体库,则会熟悉构成这些组件的类。

下图展示了这些组件在典型应用中的组合方式。

由于使用 Media3 的媒体应用的不同组件共享接口和类,因此它们可以通过多种简单的方式相互关联。
图 1:媒体应用组件

媒体播放器

媒体播放器是应用的一个组件,用于播放媒体文件。在 Media3 中,您会看到:

说明 实现注意事项
Player Player 是一个接口,用于定义媒体播放器的传统高级功能,例如播放、暂停和跳转功能。 在 Media3 中,Player 接口是多个组件(例如 MediaSessionMediaController)实现或使用的常见 API。
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 MediaLibraryServiceMediaSessionService 类似,但它包含额外的 API,以便您将内容库提供给客户端应用。
MediaBrowser 借助 MediaBrowser 类,用户可以浏览媒体应用的内容库并选择要播放的内容。 MediaBrowser 类同时实现了 MediaControllerPlayer 接口。与 MediaController 类似,Android Auto 等客户端应用通常会实现 MediaBrowser

详细了解 Media3 MediaSession

界面组件

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

说明 实现注意事项
PlayerView 用于显示视频和播放控件的默认 View 连接到 ExoPlayerMediaController 或任何其他自定义 Player

详细了解 Media3 界面

修改组件

Media3 包含适用于媒体编辑用例的 Transformer API,包括:

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

详细了解 Media3 Transformer

简介视频

观看以下视频,了解 Media3 的开发者对其的介绍。