audioplayers icon indicating copy to clipboard operation
audioplayers copied to clipboard

Allow playing of live streamed data

Open Binozo opened this issue 8 months ago • 1 comments

Checklist

  • [X] I made sure that the issue I am raising doesn't already exist

Use case / Problem

Hello there 👋

currently I am developing an app for my raspberry pi running on flutter-pi. flutter-pi supports only this audio package so that's why I chose it (and it looks decent too).

In this use case the audio data is being live streamed by my server in a format like this: Stream<Uint8List>. I looked through the wiki and there is no real option for live streamed data beside BytesSource and UrlSource but those only support audio data which is already fully downloaded.

I think it would be a great addition for this package

Proposal / Solution

I would suggest a new type of Source like StreamedBytesSource for example. With that new type you would constantly add data to the buffer which is being read by this package. I think implementing this new type of source and playing the actual data like BytesSource does would be a good way to implement that.

Example Code

Example Code
void main() {
  final player = AudioPlayer();
  // Pseudo stream but could be implemented somehow like this
  Stream<Uint8List> source = // stream init
  await player.setSource(StreamedBytesSource(source));
  // Add data
  source.add([0, 1, 0, 1, 0, 1 /* ... */]); // being fed by an external source
}

Affected platforms

Android, iOS, web, Windows, Linux, macOS

Platform details

I think it'll work on every platform which implements BytesSource because the way it plays the audio could be implemented like BytesSource does.

Audio Files/URLs/Sources

No response

Mockups

No response

Related issues / more information

I think this feature would be a great addition and I'm looking forward to do the actual implementation myself :)

Currently I am planning to wait for some feedback to this feature request until I do the actual implementation

Working on PR

yeah

Binozo avatar May 26 '24 18:05 Binozo