Go to file
Andrea Jonus 0f57b69ead
Add Icy metadata support on Android (#78)
* Add Icy "info" metadata to Android playback events

* Add IcyMetadata stream to the Flutter module

* Update ExoPlayer to 2.11.4

* Use Player.EventListener.onTracksChanged to retrieve IcyHeaders

* Iterate over each track of trackGroups to look for IcyHeaders
2020-04-21 22:57:32 +10:00
.github/ISSUE_TEMPLATE Update issue templates 2020-04-18 18:11:41 +10:00
android Add Icy metadata support on Android (#78) 2020-04-21 22:57:32 +10:00
darwin/Classes Check API availability on MacOS 2020-04-07 12:13:55 +10:00
example Support # and ? in file path on Android. 2020-04-21 20:26:53 +10:00
ios MacOS support 2020-04-07 01:02:57 +10:00
lib Add Icy metadata support on Android (#78) 2020-04-21 22:57:32 +10:00
macos MacOS support 2020-04-07 01:02:57 +10:00
test Exoplayer exceptions (#76) 2020-04-20 14:19:43 +10:00
.gitignore Exoplayer exceptions (#76) 2020-04-20 14:19:43 +10:00
.metadata Project template 2019-11-26 01:50:21 +11:00
CHANGELOG.md Version 0.1.5 2020-04-15 23:36:35 +10:00
LICENSE Update Copyright dates 2020-01-02 13:37:22 +11:00
README.md Exoplayer exceptions (#76) 2020-04-20 14:19:43 +10:00
pubspec.lock Update rxdart to 0.24.0 2020-04-15 23:33:22 +10:00
pubspec.yaml Version 0.1.5 2020-04-15 23:36:35 +10:00

README.md

just_audio

A Flutter plugin to play audio from URLs, files, assets and DASH/HLS streams. This plugin can be used with audio_service to play audio in the background and control playback from the lock screen, Android notifications, the iOS Control Center, and headset buttons.

Features

Feature Android iOS MacOS Web
read from URL
read from file
read from asset
DASH (untested) (untested) (untested)
HLS (untested) (untested) (untested)
play/pause/stop/seek
set volume (untested) (untested) (untested)
set speed (untested) (untested)
clip audio
dispose
catch player errors

This plugin has been tested on Android and Web, and is being made available for testing on iOS. Please consider reporting any bugs you encounter here or submitting pull requests here.

Example

Initialisation:

final player = AudioPlayer();
var duration = await player.setUrl('https://foo.com/bar.mp3');

Standard controls:

player.play();
await player.seek(Duration(seconds: 10));
await player.pause();
await player.stop();

Clipping audio:

await player.setClip(start: Duration(seconds: 10), end: Duration(seconds: 20));
await player.play(); // Waits for playback to finish

Release resources:

await player.dispose();

Catch player error:

player.setUrl("https://s3.amazonaws.com/404-file.mp3").catchError((error) {
  // catch audio error ex: 404 url, wrong url ...
  print(error);
});

Platform specific configuration

Android

If you wish to connect to non-HTTPS URLS, add the following attribute to the application element of your AndroidManifest.xml file:

    <application ... android:usesCleartextTraffic="true">

iOS

If you wish to connect to non-HTTPS URLS, add the following to your Info.plist file:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsForMedia</key>
    <true/>
</dict>

MacOS

To allow your MacOS application to access audio files on the Internet, add the following to your DebugProfile.entitlements and Release.entitlements files:

    <key>com.apple.security.network.client</key>
    <true/>

If you wish to connect to non-HTTPS URLS, add the following to your Info.plist file:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsForMedia</key>
    <true/>
</dict>

Todo

  • FLAC support
  • Gapless playback