ShortPlay 是一个基于 Flutter 的短剧播放器,用纯 C 实现 MP4 CENC 解密并与原生播放器对接,重点优化上下滑切集的流畅体验。
- 3.2.2
- 发布于
- 1 天前
- 90
- 星标
- 3
- 下载
- 同步于
- 1 天前
最新版本
3.2.22026年10月18日 18:40下载慢?可在上方随时切换镜像源
项目说明
项目概述
ShortPlay 是一个基于 Flutter 的短剧播放器,核心做两件事:原生 DRM 解密与流畅的滑动切集。它用纯 C 实现 AES-128 CTR 解密核心,Android 与 iOS 共用同一套代码,播放器拿到的就是已解密的明文数据,硬解链路完全不变。播放页还用三个播放器实例做滑动窗口,把切集首帧从数百毫秒压到百毫秒量级。
把解密做到无感,把上下滑切集做到几乎不停顿。
主要功能
- 原生解密:用纯 C 实现 AES-128 与 MP4 CENC 解析,零第三方依赖
- 跨端共用:Android 与 iOS 共用同一套解密核心
- 零落盘:生产者持续拉流,消费者按播放节奏吐明文,全程不写磁盘
- 双端接入:Android 接 Media3 ExoPlayer,iOS 接 AVPlayer
- 滑动窗口:同时维护当前、下一集与上一集三个播放器实例
- 分级预热:按全量、仅头部、头部加数据三种粒度提前预热
- 统一接口:C 层暴露与播放器无关的统一 ABI
适用人群
- 研究移动端流媒体解密的开发者
- 需要实现丝滑切集体验的开发者
- 使用 Flutter 构建播放类应用的团队
- 关注 C 与原生播放器对接的工程师
快速上手
- 确保已安装 Flutter 3.24 及以上版本
- 克隆仓库并拉取依赖
git clone <repo-url>
cd shortplay
flutter pub get- 连接真机后运行,真机调试体验更接近实际
flutter run- 前置要求为 Flutter 3.24 以上、Android NDK 与 Xcode 15 以上
核心优势
- 切集更快:滑动窗口让切集首帧从数百毫秒降到百毫秒量级
- 带宽不浪费:分级预热只对可能滑到的剧集补数据
- 解码无感:播放器拿到明文数据,硬解链路完全不变
- 接口统一:C 层 ABI 与播放器无关,便于替换与复用
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Android、iOS |
| 运行框架 | Flutter 3.24 及以上、Dart 3.6 及以上 |
| 构建依赖 | Android NDK、Xcode 15 及以上 |
注意事项
- 本项目仅供学习与技术交流,不提供任何内容资源
- 使用时请确保拥有相关接口和内容的合法授权
- 涉及的核心算法未开源,请勿用于侵权用途
- 项目采用 MIT 许可
历史版本
排序