ShortPlay is a Flutter short-drama player that implements MP4 CENC decryption in pure C and pairs with native players, focusing on smooth swipe-to-switch playback.
- 3.2.2
- Published at
- 1d ago
- 90
- Stars
- 3
- Download
- Synced at
- 1d ago
Latest release
3.2.2Oct 18, 2026, 10:40 AMDownloads slow? Switch the source anytime above
README
Project Overview
ShortPlay is a Flutter short-drama player that focuses on two things: native DRM decryption and smooth swipe-to-switch playback. It implements an AES-128 CTR decryption core in pure C, shared by Android and iOS, so the player receives already-decrypted plaintext with the hardware decode path unchanged. The playback page also keeps three player instances as a sliding window, cutting the first frame on switch from hundreds of milliseconds to the low hundreds.
Makes decryption invisible and swipe-to-switch nearly seamless.
Key Features
- Native decryption: implements AES-128 and MP4 CENC parsing in pure C with zero third-party dependencies
- Shared across platforms: Android and iOS use the same decryption core
- No disk writes: a producer keeps fetching while a consumer emits plaintext on the player's read rhythm
- Dual integration: Android uses Media3 ExoPlayer, iOS uses AVPlayer
- Sliding window: maintains current, next, and previous player instances at once
- Tiered prewarm: prewarms at full, header-only, and header-plus-data granularity
- Unified interface: the C layer exposes a player-agnostic ABI
Target Audience
- Developers studying mobile streaming decryption
- Developers who need a seamless episode-switch experience
- Teams building playback apps with Flutter
- Engineers working on C and native player integration
Quick Start
- Make sure Flutter 3.24 or above is installed
- Clone the repository and fetch dependencies
git clone <repo-url>
cd shortplay
flutter pub get- Run on a real device for a closer-to-reality test
flutter run- Prerequisites are Flutter 3.24 or above, Android NDK, and Xcode 15 or above
Core Advantages
- Faster switching: the sliding window cuts the first-frame time from hundreds of milliseconds to the low hundreds
- No wasted bandwidth: tiered prewarm only fills data for episodes you might reach
- Invisible decoding: the player receives plaintext, so the hardware decode path is unchanged
- Unified interface: the C-layer ABI is player-agnostic and easy to swap and reuse
System Requirements
| Item | Requirement |
|---|---|
| OS | Android, iOS |
| Framework | Flutter 3.24 or above, Dart 3.6 or above |
| Build dependencies | Android NDK, Xcode 15 or above |
Notes
- This project is for learning and technical exchange only and provides no content
- Ensure you have lawful authorization for the interfaces and content you use
- The core algorithms involved are not open source; do not use them for infringement
- Licensed under MIT
Release history
Sort