Repository navigation
KitePlayer 0.0.24
Audio-only media gets a picture. The optional audio visualiser follows the sound through seeks and track changes, with 78 drawings, palettes and a director that changes drawings with the music.
Usage
// Native views, no Compose.
implementation("io.github.yuroyami:kiteplayer:0.0.24")
// Compose playback, including the default player and both video paths.
implementation("io.github.yuroyami:kiteplayer-compose:0.0.24")
// Optional Compose audio visualiser, alongside either playback dependency.
implementation("io.github.yuroyami:kiteplayer-audioviz:0.0.24")The visualiser supports Android, iOS and the desktop JVM. Show KiteAudioViz when PlayerSnapshot.isAudioOnly is true. Attached album art still counts as audio-only media. The README has the integration example.
Changelog
- Added the optional audio visualiser and public audio taps for meters and custom drawings. Scene pixels, uploads and buffers are reused; bloom uses a filtered image pyramid and trail resolution adapts to frame cost. Measurements and limits.
- Added interruption and background handling, platform media sessions, iOS picture in picture, and Android picture-in-picture helpers.
- Added media inspection without playback, frame capture with subtitles, HTTP external subtitles, and mementos carrying picture, subtitle and audio settings.
- Added
MediaIo.ofBytesandMediaItem.fromfor media already held in memory. Each open gets an independent reader without copying the bytes. Fixes #43. - Backward seeks first request a two-second window, then retry without it if the container refuses. Fixes #35.
- Fixed Android Surface changes blocking the main thread, and software video ignoring picture adjustments.
- Fixed downmixing to mono and quad layouts, YCgCo colours, Metal chroma placement, WebVTT positioning, and the last subtitle being cut off at EOF.
- Breaking:
kiteplayer-mobileis removed. Usekiteplayer; Kotlin package names are unchanged. - Breaking:
MediaItem.iouses the namedMediaIoFactoryinterface. Lambdas at call sites still convert. Recompile consumers. - Breaking:
fflags=fastseekandusetocare refused because the engine owns the MP3 seek strategy.
See the full changelog for the complete list.
Dependencies
- Kotlin 2.4.10, Compose Multiplatform 1.12.0
- Android Gradle Plugin 9.4.0, Gradle 9.7.1, JDK 21; Android minSdk 26
- KiteFFmpeg 0.2.0, Kite3D 0.2.0 for the optional visualiser
- Ktor 3.5.2, libass 0.17.4