Skip to content

橘子视频播放器(IJKplayer、ExoPlayer、MediaPlayer、AliPlayer),HTTPS,支持弹幕,外挂字幕(SRT/ASS/VTT),OCR硬字幕识别翻译,gif截图,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放,列表全屏动画,视频加载速度显示,列表小窗口支持拖动,调整比例,多分辨率切换,支持运行时切换播放器内核,倍速播放(0.35x-10x),长按倍速,定时关闭,跳过片头片尾,DLNA投屏,画中画模式,播放历史记忆,进度记忆,语言包在线下载管理。

License

Notifications You must be signed in to change notification settings

706412584/orangeplayer

Repository files navigation

OrangePlayer 橘子播放器

For Developers: Professional Android video player library for building video applications.
Open source under Apache 2.0 License.

功能完整的 Android 视频播放器 SDK

基于 GSYVideoPlayer 的增强视频播放器库,为 Android 开发者提供完整的视频播放解决方案

JitPack Android CI License API GitHub stars

📱 下载 Demo APK | 📖 快速开始 | 📚 API 文档 | ❓ 常见问题


截图预览

功能特性

功能 说明
🎬 多播放内核 系统/ExoPlayer/IJK/阿里云,运行时切换
📝 字幕系统 SRT/ASS/VTT 格式,大小可调
🔤 OCR 识别 Tesseract 硬字幕识别 + ML Kit 翻译
🎤 语音识别 Vosk 离线语音识别,实时字幕生成
💬 弹幕功能 大小/速度/透明度可调,支持发送
🎛️ 倍速播放 0.35x - 10x,长按倍速
⏰ 定时关闭 30/60/90/120 分钟
⏭️ 跳过片头尾 0-300 秒可调
📺 投屏 DLNA 投屏支持
🖼️ 画中画 PiP 小窗模式
📸 截图 视频截图保存

📚 文档导航


快速开始

1. 添加仓库

使用 JitPack

在项目根目录的 settings.gradle 中添加 JitPack 仓库:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }  // 添加 JitPack 仓库
    }
}

或者在 build.gradle (Project) 中添加:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }  // 添加 JitPack 仓库
    }
}

2. 添加依赖

app/build.gradle 中添加:

dependencies {
    // OrangePlayer 核心库
    implementation 'com.github.706412584:orangeplayer:1.0.7'  // JitPack
    
    // GSY 基础依赖(必需)
    implementation 'io.github.carguo:gsyvideoplayer-java:11.3.0'
    
    // ExoPlayer 播放内核(推荐)
    implementation 'io.github.carguo:gsyvideoplayer-exo2:11.3.0'
}

💡 提示

  • JitPack 版本:com.github.706412584:orangeplayer:1.0.7(需要添加 JitPack 仓库)
  • 完整的依赖配置请查看 安装指南

3. 布局文件

<com.orange.playerlibrary.OrangevideoView
    android:id="@+id/video_player"
    android:layout_width="match_parent"
    android:layout_height="200dp" />

4. 基本使用

import com.orange.playerlibrary.OrangevideoView;

public class MainActivity extends AppCompatActivity {
    private OrangevideoView mVideoView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mVideoView = findViewById(R.id.video_player);
        
        // 设置视频地址和标题
        mVideoView.setUp("https://example.com/video.mp4", true, "示例视频");
        
        // 开始播放
        mVideoView.startPlayLogic();
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        mVideoView.onVideoPause();
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        mVideoView.onVideoResume();
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mVideoView.release();
    }
    
    @Override
    public void onBackPressed() {
        if (mVideoView.isFullScreen()) {
            mVideoView.exitFullScreen();
            return;
        }
        super.onBackPressed();
    }
}

就这么简单!OrangePlayer 会自动创建和配置所有 UI 组件。


完整使用示例

查看 完整示例代码,包含 15 个实用场景:

  1. 基础播放器 - 最简单的实现
  2. 带自定义请求头
  3. 播放状态监听
  4. 播放进度监听
  5. 播放完成监听
  6. 倍速播放
  7. 字幕加载
  8. 弹幕功能
  9. 播放列表
  10. 画中画模式
  11. 投屏功能
  12. OCR 字幕识别
  13. 语音识别字幕
  14. 播放器设置
  15. 错误处理

播放内核切换

OrangePlayer 支持 4 种播放内核,可在运行时动态切换。

// 切换到 ExoPlayer(推荐)
videoView.selectPlayerFactory(PlayerConstants.ENGINE_EXO);

// 切换到 IJK 播放器
videoView.selectPlayerFactory(PlayerConstants.ENGINE_IJK);

// 切换到系统播放器
videoView.selectPlayerFactory(PlayerConstants.ENGINE_DEFAULT);

// 切换到阿里云播放器
videoView.selectPlayerFactory(PlayerConstants.ENGINE_ALI);

详细对比和配置请查看 播放内核指南


可选功能

OCR 字幕翻译

识别视频画面中的硬字幕并翻译。

dependencies {
    implementation 'cz.adaptech.tesseract4android:tesseract4android:4.7.0'
    implementation 'com.google.mlkit:translate:17.0.2'
}

详细配置请查看 OCR 功能指南

语音识别字幕

实时识别视频音频并生成字幕(需要 Android 10+)。

dependencies {
    implementation 'com.alphacephei:vosk-android:0.3.47'
}

详细配置请查看 语音识别指南

DLNA 投屏

dependencies {
    implementation 'com.github.AnyListen:UaoanDLNA:1.0.1'
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
}

详细配置请查看 投屏功能指南


常见问题

遇到问题?查看 常见问题解答

更多问题请查看完整的 FAQ 文档


API 文档

完整的 API 参考请查看 API 文档

主要类


项目结构

详细结构请查看 STRUCTURE.md


混淆配置

# GSYVideoPlayer
-keep class com.shuyu.gsyvideoplayer.** { *; }
-keep class tv.danmaku.ijk.** { *; }

# OrangePlayer
-keep class com.orange.playerlibrary.** { *; }

# Tesseract OCR
-keep class com.googlecode.tesseract.android.** { *; }

# ML Kit Translation
-keep class com.google.mlkit.** { *; }

# Vosk 语音识别
-keep class org.vosk.** { *; }

# 阿里云播放器
-keep class com.aliyun.player.** { *; }
-keep class com.cicada.player.** { *; }

# DLNA 投屏
-keep class com.uaoanlao.tv.** { *; }

License

Apache License 2.0


作者

QQ: 706412584

如有问题或建议,欢迎联系交流。

致谢

About

橘子视频播放器(IJKplayer、ExoPlayer、MediaPlayer、AliPlayer),HTTPS,支持弹幕,外挂字幕(SRT/ASS/VTT),OCR硬字幕识别翻译,gif截图,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放,列表全屏动画,视频加载速度显示,列表小窗口支持拖动,调整比例,多分辨率切换,支持运行时切换播放器内核,倍速播放(0.35x-10x),长按倍速,定时关闭,跳过片头片尾,DLNA投屏,画中画模式,播放历史记忆,进度记忆,语言包在线下载管理。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published