Erlmo

shortplay

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 与原生播放器对接的工程师

快速上手

  1. 确保已安装 Flutter 3.24 及以上版本
  2. 克隆仓库并拉取依赖
git clone <repo-url>
cd shortplay
flutter pub get
  1. 连接真机后运行,真机调试体验更接近实际
flutter run
  1. 前置要求为 Flutter 3.24 以上、Android NDK 与 Xcode 15 以上

核心优势

  • 切集更快:滑动窗口让切集首帧从数百毫秒降到百毫秒量级
  • 带宽不浪费:分级预热只对可能滑到的剧集补数据
  • 解码无感:播放器拿到明文数据,硬解链路完全不变
  • 接口统一:C 层 ABI 与播放器无关,便于替换与复用

系统要求

项目 要求
操作系统 Android、iOS
运行框架 Flutter 3.24 及以上、Dart 3.6 及以上
构建依赖 Android NDK、Xcode 15 及以上

注意事项

  • 本项目仅供学习与技术交流,不提供任何内容资源
  • 使用时请确保拥有相关接口和内容的合法授权
  • 涉及的核心算法未开源,请勿用于侵权用途
  • 项目采用 MIT 许可

历史版本

排序