Media3 / ExoPlayer 适用于 Kotlin:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Media3 / ExoPlayer 适用于 Kotlin:完整指南与示例

\n\n

1. 这是什么以及为什么需要它

\n\n

Media3(以前称为 ExoPlayer)是 Google 为 Android 平台开发的一款现代、强大且灵活的音频和视频播放库。它是 Android SDK 中已过时的 MediaPlayer 的继承者,提供了更广泛的功能、更好的性能以及对播放过程的更强控制。

\n\n

为什么需要 Media3 / ExoPlayer?与仅适用于简单任务的 MediaPlayer 不同,ExoPlayer 为开发者提供了对媒体管道的完全控制。它支持多种格式(DASH、HLS、SmoothStreaming、MP4、MP3、WebM 等)、自适应比特率切换(ABR)、自定义渲染、字幕处理(包括 WebVTT、TTML)、DRM 保护(Widevine、PlayReady)等等。该库正在积极开发、优化,并用于 YouTube、Google Photos 等许多流行服务中。

\n\n

对于 Kotlin 开发者来说,Media3 是创建任何媒体应用的事实标准:从简单的音乐播放器到具有自适应流媒体和 DRM 支持的复杂视频播放器。它允许编写干净、模块化且可测试的代码,完全控制播放生命周期。

\n\n

2. 安装

\n\n

Media3 是一个 Android 库,因此通过 Gradle 构建系统安装。将以下依赖项添加到您的 app 模块的 build.gradle.kts(或 build.gradle)文件中:

\n\n
// build.gradle.kts (Module :app)\ndependencies {\n    // 基础 Media3 库(必需)\n    implementation("androidx.media3:media3-exoplayer:1.4.1")\n    // UI 组件(PlayerView、PlayerControlView 等)\n    implementation("androidx.media3:media3-ui:1.4.1")\n    // 用于 HLS(HTTP 实时流媒体)\n    implementation("androidx.media3:media3-exoplayer-hls:1.4.1")\n    // 用于 DASH(基于 HTTP 的动态自适应流媒体)\n    implementation("androidx.media3:media3-exoplayer-dash:1.4.1")\n    // 用于 SmoothStreaming\n    implementation("androidx.media3:media3-exoplayer-rtsp:1.4.1")\n    // 用于字幕\n    implementation("androidx.media3:media3-exoplayer-ima:1.4.1")\n    // 用于 DRM(Widevine)\n    implementation("androidx.media3:media3-exoplayer-drm:1.4.1")\n    // 用于会话(MediaSession)—— 与系统控件集成所必需\n    implementation("androidx.media3:media3-session:1.4.1")\n    // 用于自定义数据源(例如缓存)\n    implementation("androidx.media3:media3-datasource:1.4.1")\n    // 用于自定义编解码器(例如 FFmpeg)\n    implementation("androidx.media3:media3-decoder:1.4.1")\n    // 用于自定义效果(例如变速)\n    implementation("androidx.media3:media3-effect:1.4.1")\n    // 用于自定义转换(例如视频裁剪)\n    implementation("androidx.media3:media3-transformer:1.4.1")\n}\n
\n\n

重要提示:版本可能会变化。最新版本始终可以在官方发布页面找到。

\n\n

添加依赖项后,在 Android Studio 中执行 Gradle 同步(Sync Now)。

\n\n

3. 快速入门——最小工作示例

\n\n

让我们创建一个最简单的视频播放器,用于播放来自互联网的视频。为此,我们需要在 XML 布局中使用 PlayerView,并在 Activity/Fragment 中编写代码。

\n\n

步骤 1:布局(activity_main.xml)

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<androidx.constrain                    

推荐