Skip to content

Latest commit

 

History

History
89 lines (69 loc) · 6.43 KB

feature_parity_table.md

File metadata and controls

89 lines (69 loc) · 6.43 KB

Feature Parity Table

Not every feature is available on every platform yet. Use this table to keep track of our work and progress, and please help if you want :)

Note on Linux Support

This is the current status of Desktop for us:

  • [DONE] Add platform interface, refactor API so native implementations are cleaner
  • [DONE] Federate plugin and provide structure to add multi-platform support
  • [DONE] Add macOS support through Darwin (existing)
  • [DONE] (thanks @azchohfi) Add Windows support
  • [DONE] Add Linux support

If you would like to assist us on implementing further steps, please reach our on our Discord server so we can coordinate efforts.

Note on Android Support

Giving support to old Android devices is very hard, on this plugin we set the minSdk as 16, but we only ensure support >= 23 as that is the minimum version that the team has devices available to test changes and new features.

This mean that, audioplayers should work on older devices, but we can't give any guarantees, we will not be able to look after issues regarding API < 23. But we would glady take any pull requests from the community that fixes or improve support on those old versions.

Main Features

Note: LLM means Low Latency Mode.

Feature/Platform Android iOS macOS web Windows Linux
Audio Source
local file on deviceyesyesyesnoyesyes
local assetyesyesyesyesyesyes
external URL fileyesyesyesyesyesyes
external URL streamyesyesyesyesyesyes
byte arraySDK >=23not yetnot yetnot yetnot yetnot yet
Audio Config
set urlyesyesyesyesyesyes
audio cache (pre-load)yesyesyesyesyesyes
low latency modeSDK >=21nonononono
Audio Control Commands
resume / pause / stopyesyesyesyesyesyes
releaseyesnot yetyesyesyesnot yet
loopyesyesyesyesyesyes
volumeyesyesyesyesyesyes
seekyesyesyesyesyesyes
Advanced Audio Control Commands
playback rateSDK >= 23yesyesyesyesyes
duck audioyes (except LLM)nonononono
respect silenceyes (except LLM)yesnononono
stay awakeyes (except LLM)yesnononono
recording activenot yetyesnononono
playing routeyes (except LLM)yesnononono
balancenononoyesyesyes
Streams
duration eventyesyesyesyesyesyes
position eventyesyesyesyesyesyes
state eventyesyesyesyesyesyes
completion eventyesyesyesyesyesyes
error eventyesyesyesnot yetyesyes

Lock Screen Controls

To control playback from lock screen on iOS and Android, you can use @ryanheise's excellent audio_service package. This article showcases how to integrate audioplayers features with and audio_service.

Do not send any PRs or additions regarding notifications/lock screen support, unless it is a generic change on our infrastructure/wiring to support better integrating with audio_service.

Other Out-of-Scope Features

Some features are also out of scope for the audioplayers package. The goal of this library is to provide a unified place to play audio media, be it songs, background musics, sound effects, etc, from different sources, and providing an array of advanced controls and listeners to control it via code.

Non-goals: if the existing solutions proposed below are not good or do not work well with audioplayers, I am happy to collaborate to create an audioplayers_x separated package (eg audioplayers_recorder).

  • interfaces: nothing related to interface building concerns audioplayers; you can use Flutter to build your interfaces;
  • audio recording: recording audio from the microphone into audio files and streams; there is already a package for this called audio_recorder.
  • playlist: you can implement playlists as you wish by playing multiple audios or songs in sequence. Doesn't make sense for this package to have any builtin playlist mechanism.
  • music metadata: some file formats include music metadata, like MP3 files that have author, track. This is a library dedicated for playing audio. It is a non-goal to provide this functionality.