Skip to content

Latest commit

 

History

History
76 lines (60 loc) · 5.08 KB

feature_parity_table.md

File metadata and controls

76 lines (60 loc) · 5.08 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: LLM means Low Latency Mode.

Main Features

Feature/Platform Android iOS macOS web
Audio Source
local file on deviceyesyesyesno
local assetyesyesyesyes
external URL fileyesyesyesyes
external URL streamyesyesyesyes
byte arraySDK >=23not yetnot yetnot yet
Audio Config
set urlyesyesyesyes
audio cache (pre-load)yesyesyesyes
low latency modeSDK >=21nonono
Audio Control Commands
resume / pause / stopyesyesyesyes
release / release modeyesyesyesnot yet
volumeyesyesyesyes
seekyesyesyesnot yet
Advanced Audio Control Commands
playback rateSDK >= 23yesyesyes
duck audioyes (except LLM)nonono
respect silenceyes (except LLM)yesnono
stay awakeyes (except LLM)yesnono
recording activenot yetyesnono
playing routeyes (except LLM)yesnono
Streams
duration eventyesyesyesnot yet
position eventyesyesyesyes
state eventyesyesyesnot yet
completion eventyesyesyesnot yet
error eventyesyesyesnot yet

Notifications

Apart from the main features for playing audio, some unrelated features to notification and lock screen management were added to audioplayers.

This is not the best home for them though. We are working with @ryanheise to eventually extract the existing notification related code from audioplayers and either:

  • create a new package, audioplayers_notifications for it
  • merge this code into the existing audio_service package

audio_service is already a package that provides much more advanced notification/lock screen controls. Please follow this example to implement all AudioPlayers features with and audio_service.

So please do not send any PRs or additions to the notifications/lock screen for now, unless it's part of our separation effort.

I will update this file as we move forward with this.

Other Features

Some features are totally 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).

  • notifications/locks screen: see section above, use this for now or audio_service;
  • 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.