Skip to content

KitePlayer 0.0.24

Choose a tag to compare

@yuroyami yuroyami released this 12 Sep 12:58
· 933 commits to main since this release

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.ofBytes and MediaItem.from for 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-mobile is removed. Use kiteplayer; Kotlin package names are unchanged.
  • Breaking: MediaItem.io uses the named MediaIoFactory interface. Lambdas at call sites still convert. Recompile consumers.
  • Breaking: fflags=fastseek and usetoc are 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