Skip to content

Latest commit

 

History

History
79 lines (62 loc) · 6.24 KB

feature_parity_table.md

File metadata and controls

79 lines (62 loc) · 6.24 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 out if you want to. :)

If you would like to assist us implement a missing feature, please browse the issue tracker and reach out to us 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 gladly 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 >=23via conversionvia conversionvia conversionyesvia conversion
Audio Config
set urlyesyesyesyesyesyes
audio cache (pre-load)yesyesyesyesyesyes
low latency modeSDK >=21nonononono
Audio Control Commands
resume / pause / stopyesyesyesyesyesyes
releaseyesyes (no mode)yes (no mode)yes (no mode)yes (no mode)yes (no mode)
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
balanceyesnot yetnot yetyesyesyes
Streams
duration eventyesyesyesyesyesyes
position eventyesyesyesyesyesyes
state eventyesyesyesyesyesyes
completion eventyesyesyesyesyesyes
log eventyesyesyesyesyesyes

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.