Repository navigation
KitePlayer 0.0.22
Audio gains an equaliser, balance, ReplayGain and a loudness meter. The queue is editable while it plays. Seeks are twice as fast.
Usage
/** Phones and desktop, native video view. */
implementation("io.github.yuroyami:kiteplayer-mobile:0.0.22")
/** Compose. Includes the stack above. */
implementation("io.github.yuroyami:kiteplayer-compose-ui:0.0.22")Convenience coordinates
kiteplayer-compose-ui contains everything. Pick one of these only when you want less.
| Coordinate | Use it when |
|---|---|
kiteplayer-mobile |
Native views, no Compose. |
kiteplayer-core |
Engine only. You bring the decoders and the output. |
kiteplayer-compose, kiteplayer-phone |
Never in new code. Deprecated old combined coordinates. |
Every coordinate
kiteplayer-compose-ui
├── kiteplayer-compose-interop
│ └── kiteplayer-mobile
│ ├── kiteplayer-core
│ │ └── kiteplayer-rt native targets only
│ ├── kiteplayer-ffmpeg KiteFFmpeg 0.2.0
│ │ └── kiteplayer-subtitles
│ ├── kiteplayer-output
│ └── kiteplayer-view
└── kiteplayer-compose-video
Changelog
- Audio: ten band equaliser, stereo balance, ReplayGain, volume up to 2.0 through a limiter, a loudness meter (
LoudnessMeter,AudioAnalysis.measureLoudness), the Android audio session id. - Queue: edit it while it plays (
addToQueue,removeFromQueue,moveInQueue,clearQueue), shuffle, chapter navigation, markers, a sleep timer with a fade,memento()andrestore()for resume. setVideoEnabled(false)parks video decoding without reopening. Two players in one process are tested.- Subtitles: a secondary track at the top,
SubtitleStyleOverridewith a background box,player.subtitleCues. kiteplayer-ffmpeg: encode a captured frame to PNG or JPEG,Thumbnails,Waveforms, typed filter chains.- Android view:
secureflag, picture in picture parameters, screen reader text, display rate matching.PlayerEvent.FramePresentedbehindPlayerConfig.frameEvents. - Diagnostics:
KiteLog.installStructured, URIs redacted by default, five newPlaybackStatsnumbers. - Breaking:
AudioConfig,PlayerConfigandPlaybackStatsgained fields. Positionalcopy()calls need a recompile. - Desktop: Compose controls drawn over the native video view get no clicks on macOS. Use
KiteRenderPath.ComposeCanvas, or keep controls beside the video. - Fixed: seeks about twice as fast; a CoreAudio zero frame request no longer replays audio; subtitle cue lookup is a binary search.
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, up from 0.1.0, with FFmpeg n8.1.2 and dav1d 1.5.4 inside