Erlmo

shortplay

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 AM
Downloads 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

  1. Make sure Flutter 3.24 or above is installed
  2. Clone the repository and fetch dependencies
git clone <repo-url>
cd shortplay
flutter pub get
  1. Run on a real device for a closer-to-reality test
flutter run
  1. 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