OrangePlayer:一个功能完整的 Android 视频播放器开源库

OrangePlayer:一个功能完整的 Android 视频播放器开源库

前言

最近在开发一个视频播放相关的项目,需要实现弹幕、字幕、OCR 识别等功能。调研了市面上的开源播放器库后,发现虽然 GSYVideoPlayer 很强大,但要实现这些功能还需要大量的二次开发。于是我基于 GSYVideoPlayer 开发了 OrangePlayer,将这些常用功能都封装好了,开箱即用。

今天分享给大家,希望能帮助到有类似需求的朋友。

项目介绍

GitHub 地址:https://github.com/706412584/orangeplayer

主要特性

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

快速开始

1. 添加依赖
dependencies { // OrangePlayer 核心库 implementation 'com.github.706412584:orangeplayer:v1.0.5' // GSY 基础依赖(必需) implementation 'io.github.carguo:gsyvideoplayer-java:11.3.0' // ExoPlayer 播放内核(推荐) implementation 'io.github.carguo:gsyvideoplayer-exo2:11.3.0' } 
2. 布局文件
<com.orange.playerlibrary.OrangevideoViewandroid:id="@+id/video_player"android:layout_width="match_parent"android:layout_height="200dp"/>
3. 代码使用
OrangevideoView mVideoView =findViewById(R.id.video_player);// 设置视频地址和标题 mVideoView.setUp("https://example.com/video.mp4",true,"示例视频");// 开始播放 mVideoView.startPlayLogic();

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

核心功能详解

1. 弹幕系统

OrangePlayer 集成了 DanmakuFlameMaster,提供完整的弹幕功能:

// 获取弹幕控制器IDanmakuController danmakuController = videoController.getDanmakuController();// 发送弹幕 danmakuController.addDanmaku("这是一条弹幕",true);// 暂停/恢复弹幕 danmakuController.pause(); danmakuController.resume();// 调整弹幕设置 danmakuController.setDanmakuSpeed(1.5f);// 速度 danmakuController.setDanmakuAlpha(0.8f);// 透明度
2. 字幕功能

支持 SRT、ASS、VTT 三种常见字幕格式:

// 加载字幕文件 videoController.loadSubtitle("https://example.com/subtitle.srt");// 或从本地加载 videoController.loadSubtitle("/sdcard/subtitle.srt");// 切换字幕显示 videoController.toggleSubtitle();
3. OCR 字幕识别

这是 OrangePlayer 的特色功能之一,可以识别视频画面中的硬字幕并翻译:

// 检查 OCR 功能是否可用if(OcrAvailabilityChecker.isOcrTranslateAvailable()){// 通过 UI 启动 OCR// 用户点击字幕按钮 -> OCR 翻译字幕 -> 设置识别区域 -> 选择语言}

实现原理

  1. 使用 Tesseract OCR 引擎识别画面中的文字
  2. 使用 ML Kit Translation API 翻译识别结果
  3. 实时显示翻译后的字幕
4. 语音识别字幕

另一个特色功能,可以实时识别视频音频并生成字幕:

// 检查语音识别是否可用(需要 Android 10+)if(VoskAvailabilityChecker.isVoskAvailable()){// 通过 UI 启动语音识别// 用户点击字幕按钮 -> 语音识别翻译 -> 选择语言}

实现原理

  1. 使用 AudioPlaybackCapture API 捕获应用内音频
  2. 使用 Vosk 离线语音识别引擎识别音频
  3. 实时显示识别结果
5. 多播放内核切换

支持 4 种播放内核,可以根据视频格式和性能需求动态切换:

// 切换到 ExoPlayer(推荐) videoView.selectPlayerFactory(PlayerConstants.ENGINE_EXO);// 切换到 IJK 播放器 videoView.selectPlayerFactory(PlayerConstants.ENGINE_IJK);// 切换到系统播放器 videoView.selectPlayerFactory(PlayerConstants.ENGINE_DEFAULT);

技术亮点

1. 组件化架构

OrangePlayer 采用组件化设计,每个功能都是独立的组件:

  • PrepareView - 准备界面
  • TitleView - 标题栏
  • VodControlView - 点播控制器
  • CompleteView - 播放完成界面
  • ErrorView - 错误界面
  • GestureView - 手势提示

这种设计使得功能扩展和自定义变得非常简单。

2. 状态管理

播放器状态分为两类:

  • 播放状态:IDLE、PREPARING、PLAYING、PAUSED、BUFFERING、ERROR、COMPLETED
  • 播放器状态:NORMAL、FULL_SCREEN、TINY_SCREEN

通过监听器可以实时获取状态变化:

videoView.addOnStateChangeListener(newOnStateChangeListener(){@OverridepublicvoidonPlayStateChanged(int playState){// 播放状态变化}@OverridepublicvoidonPlayerStateChanged(int playerState){// 播放器状态变化}});
3. 性能优化
  • 内存优化:及时释放资源,避免内存泄漏
  • 渲染优化:使用 SurfaceView/TextureView 双模式
  • 缓冲优化:智能预加载和缓存策略
  • 电量优化:后台自动暂停,前台恢复

实际应用场景

OrangePlayer 适用于以下场景:

  1. 在线视频 App:支持多种视频格式和流媒体协议
  2. 教育类 App:字幕、倍速、截图等功能
  3. 外语学习 App:OCR 翻译、语音识别字幕
  4. 直播 App:弹幕、投屏功能
  5. 本地视频播放器:完整的播放控制

与其他播放器对比

功能OrangePlayerGSYVideoPlayerExoPlayerIJKPlayer
弹幕✅ 内置❌ 需自己集成❌ 需自己集成❌ 需自己集成
字幕✅ 内置❌ 需自己集成✅ 支持✅ 支持
OCR✅ 内置❌ 无❌ 无❌ 无
语音识别✅ 内置❌ 无❌ 无❌ 无
投屏✅ 内置❌ 需自己集成❌ 需自己集成❌ 需自己集成
UI 组件✅ 完整✅ 完整❌ 需自己开发❌ 需自己开发
多内核✅ 4 种✅ 4 种❌ 单一❌ 单一

后续计划

  • 支持更多字幕格式(WebVTT、TTML)
  • 添加视频编辑功能(裁剪、滤镜)
  • 支持 VR 视频播放
  • 优化 OCR 识别准确率
  • 添加更多手势操作
  • 支持多音轨切换

总结

OrangePlayer 是一个功能完整、易于使用的 Android 视频播放器库。如果你正在开发视频相关的应用,不妨试试 OrangePlayer,相信它能帮你节省大量开发时间。

GitHub 地址:https://github.com/706412584/orangeplayer

如果觉得有用,欢迎 Star ⭐️ 支持一下!

参考资料


作者:QQ 706412584

联系方式:欢迎交流讨论

开源协议:Apache License 2.0

Read more

云服务器部署 OpenClaw 完全指南:从零搭建 7×24 小时 AI 助手

云服务器部署 OpenClaw 完全指南:从零搭建 7×24 小时 AI 助手

云服务器部署 OpenClaw 完全指南:从零搭建 7×24 小时 AI 助手 适用版本: OpenClaw v2026.x | 难度: 中级 | 预计耗时: 15-30 分钟 一、项目简介与架构 OpenClaw 是一个开源的自主智能体(Autonomous Agent)框架,支持通过自然语言指令执行跨平台自动化任务。相比本地部署,云服务器部署可实现: * 7×24 小时在线:无需保持本地设备开机 * 公网访问:支持 Webhook 回调和远程控制 * 多平台接入:Telegram、飞书、Discord、WhatsApp 等 系统要求 配置项最低要求推荐配置CPU1 核2 核+内存2 GB4 GB存储20 GB

By Ne0inhk

LiveKit × Bright Data:构建实时新闻播客 AI 语音智能体

想让 AI 自动追踪品牌新闻,还能直接生成语音播客?这个教程带你从零搭建:SERP API 实时抓取新闻 → Web Unlocker 突破反爬 → LiveKit 语音合成输出。企业品牌监测的新玩法,代码全开源! 利用LiveKit构建语音智能助手 bright data官方账号:https://blog.ZEEKLOG.net/ryanding_brd 专属链接:https://www.bright.cn/blog/ai/voice-agents-with-livekit-and-bright-data/?utm_source=brand&utm_campaign=brnd-mkt_cn_ZEEKLOG_luo202602&promo=brd26

By Ne0inhk
猫头虎AI分享:Excel MCP,让AI具备操作Excel表格|创建销售数据表、复制工作表、填充数据、写公式、绘制图表、调节颜色、添加透视表、保存为PDF

猫头虎AI分享:Excel MCP,让AI具备操作Excel表格|创建销售数据表、复制工作表、填充数据、写公式、绘制图表、调节颜色、添加透视表、保存为PDF

猫头虎AI分享:Excel MCP,让AI具备操作Excel表格|包括创建销售数据表、复制工作表、填充数据、写公式、绘制图表、调节颜色和添加透视表,支持多种连接方式,并可保存为PDF,可在本地或远程运行 大家好,我是猫头虎 🦉🐯,今天要给大家带来一款可以让 AI 直接操控 Excel 的神器 —— office-excel-mcp-server。 它能让 AI 拥有强大的 Excel 操作能力,无需打开 Excel 软件本体,就能创建销售数据表、复制工作表、批量填充数据、写公式、绘制图表、调节颜色、添加数据透视表、保存为 PDF 等。 更棒的是,它支持本地运行或远程部署,并提供 stdio、SSE、HTTP 三种连接方式。 有了它,你可以直接对 AI 说:

By Ne0inhk
A / B测试太慢?AI帮你实时优化实验策略

A / B测试太慢?AI帮你实时优化实验策略

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕AI这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * A/B测试太慢?AI帮你实时优化实验策略 🚀 * 为什么传统A/B测试成了效率黑洞? * AI驱动的实时优化:从“被动等待”到“主动决策” * 贝叶斯优化:AI决策的数学引擎 * 代理模型:预测点击率 * 采集函数:决定下一步策略 * 代码实战:用Python实现AI优化A/B测试 * 代码执行结果示例 * 实时决策流程:AI如何动态调整实验? * 实际业务场景:电商大促的AI优化案例 * 贝叶斯优化 vs 其他AI方法 * 如何在你的系统中落地AI优化? * 步骤1:构建基础数据层 * 步骤2:集成AI优化引擎 * 步骤3:设置停止条件 * 为什么AI优化能避免“实验陷阱”?

By Ne0inhk