# android_exoplayer_demo **Repository Path**: keshao/android_exoplayer_demo ## Basic Information - **Project Name**: android_exoplayer_demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExoPlayer Demo 基于 Android Media3 ExoPlayer 的视频播放器示例,支持 SurfaceView 和 GLSurfaceView 渲染模式切换。 ## 功能特性 - **ExoPlayer 播放引擎**:基于 `androidx.media3` (ExoPlayer),支持 MP4、HLS、DASH 等主流格式 - **渲染模式切换**:运行时在 SurfaceView 和 GLSurfaceView 之间无缝切换,自动保持播放进度 - **本地文件播放**:通过系统文件选择器选取本地视频/音频文件 - **URL 播放**:手动输入网络地址播放在线媒体流 - **播放控制**:ExoPlayer 内置控制栏(播放/暂停/进度条/快进快退) ## 项目配置 | 配置项 | 值 | |--------|-----| | 语言 | Java | | minSdk | 21 (Android 5.0) | | targetSdk | 34 (Android 14) | | Gradle | 8.5 | | AGP | 8.2.2 | | ExoPlayer | media3 1.2.1 | ## 国内镜像源 - **Maven 仓库**:阿里云镜像(google / public / central / gradle-plugin) - **Gradle 分发包**:腾讯云镜像 ## 项目结构 ``` app/src/main/ ├── java/com/example/exoplayerdemo/ │ └── MainActivity.java # 主界面,播放器逻辑 ├── res/ │ ├── layout/activity_main.xml # 播放器布局 │ ├── values/ # 颜色、字符串、主题 │ └── drawable/ # 启动图标 └── AndroidManifest.xml ``` ## 构建与运行 ```bash # 克隆项目 git clone https://gitee.com/keshao/android_exoplayer_demo.git # 用 Android Studio 打开项目,等待 Gradle 同步完成后运行 ``` ## 使用说明 1. **选择本地文件**:点击"选择本地文件"按钮,从设备中选取视频或音频文件 2. **输入 URL 播放**:在输入框中填写媒体地址,点击"播放"按钮 3. **切换渲染模式**:点击底部的 `SurfaceView` / `GLSurfaceView` 按钮切换渲染方式,播放进度自动保持 ## 依赖库 - `androidx.media3:media3-exoplayer` - ExoPlayer 核心 - `androidx.media3:media3-exoplayer-hls` - HLS 协议支持 - `androidx.media3:media3-exoplayer-dash` - DASH 协议支持 - `androidx.media3:media3-ui` - 播放器控制 UI - `com.google.android.material:material` - Material Design 组件