Skip to content

KitePlayer 0.0.23

Choose a tag to compare

@yuroyami yuroyami released this 06 Sep 06:21
· 972 commits to main since this release

ASS and SSA subtitles are drawn by libass. HTTP and HTTPS links play with no setup.

Usage

/** Native views, no Compose. */
implementation("io.github.yuroyami:kiteplayer:0.0.23")

/** Compose. Everything above, plus both Compose video paths. */
implementation("io.github.yuroyami:kiteplayer-compose:0.0.23")
kiteplayer-compose
├── kiteplayer                       also kiteplayer-mobile
│   ├── kiteplayer-core
│   │   └── kiteplayer-rt            native targets only
│   ├── kiteplayer-ffmpeg            KiteFFmpeg 0.2.0
│   │   └── kiteplayer-subtitles
│   ├── kiteplayer-output
│   ├── kiteplayer-view-bindings
│   │   └── kiteplayer-view
│   ├── kiteplayer-network           HTTP and HTTPS
│   └── kiteplayer-libass            ASS and SSA
├── kiteplayer-compose-ui
│   ├── kiteplayer-compose-interop
│   └── kiteplayer-compose-video
└── kiteplayer-phone                 deprecated

Changelog

  • ASS and SSA subtitles render through libass on every platform, redrawn each video frame. Attached fonts load; SubtitleConfig.fonts adds yours. SubtitleConfig.typesetting = false keeps the old styling.
  • HTTP and HTTPS work with no setup. NetworkConfig.autoResolve = false turns that off. Per-item headers reach the transport.
  • New artifacts: kiteplayer, kiteplayer-view-bindings, kiteplayer-network, kiteplayer-libass.
  • Breaking: kiteplayer-compose-ui no longer includes the player factory or network. Use kiteplayer-compose, or add kiteplayer beside it.
  • Breaking: SubtitleConfig, PlayerSnapshot and NetworkConfig gained fields. Positional copy() calls need a recompile.
  • Breaking: AndroidPlayerViewRendererFactory.create takes a third callback, onScaleMode.
  • Web: libass is a separate module (kiteass.mjs and kiteass.wasm) in the web zip attached to the wasmJs artifact. Browsers have no system fonts; supply your own.
  • Fixed: fill and stretch on the Android view looked like fit; headers on the automatic transport (#49); credentials shown in diagnostics for a URL with no path (#115); a sleep timer replaced during its fade (#121); quadratic time on bad SRT and WebVTT durations (#120).

Dependencies

  • Kotlin 2.4.10, Compose Multiplatform 1.12.0-rc01
  • Android Gradle Plugin 9.2.1, Gradle 9.6.0, JDK 21
  • Android min SDK 26
  • KiteFFmpeg 0.2.0, with FFmpeg n8.1.2 and dav1d 1.5.4 inside
  • Ktor 3.5.2 inside kiteplayer-network, libass 0.17.4 inside kiteplayer-libass