2019-11-28 06:55:32 +00:00
# just_audio
2019-11-25 14:50:21 +00:00
2020-01-01 13:49:21 +00:00
A Flutter plugin to play audio from URLs, files, assets and DASH/HLS streams. This plugin can be used with [audio_service ](https://pub.dev/packages/audio_service ) to play audio in the background and control playback from the lock screen, Android notifications, the iOS Control Center, and headset buttons.
2019-11-25 14:50:21 +00:00
2019-11-28 05:16:54 +00:00
## Features
2019-11-25 14:50:21 +00:00
2020-04-07 02:06:40 +00:00
| 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) |
2020-04-07 02:39:25 +00:00
| set speed | ✅ | (untested) | (untested) | ✅ |
2020-04-07 02:06:40 +00:00
| clip audio | ✅ | | | ✅ |
| dispose | ✅ | ✅ | ✅ | ✅ |
2020-04-20 04:19:43 +00:00
| catch player errors | ✅ | | | |
2020-03-07 03:05:54 +00:00
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 ](https://github.com/ryanheise/just_audio/issues ) or submitting pull requests [here ](https://github.com/ryanheise/just_audio/pulls ).
2019-11-28 06:59:38 +00:00
## Example
2020-01-01 13:49:21 +00:00
Initialisation:
2019-11-28 06:59:38 +00:00
```dart
final player = AudioPlayer();
2020-01-01 13:49:21 +00:00
var duration = await player.setUrl('https://foo.com/bar.mp3');
```
Standard controls:
```dart
2019-12-31 09:38:46 +00:00
player.play();
2020-01-01 13:49:21 +00:00
await player.seek(Duration(seconds: 10));
await player.pause();
2019-12-31 09:38:46 +00:00
await player.stop();
2020-01-01 13:49:21 +00:00
```
Clipping audio:
```dart
2019-12-31 09:38:46 +00:00
await player.setClip(start: Duration(seconds: 10), end: Duration(seconds: 20));
2020-01-01 13:49:21 +00:00
await player.play(); // Waits for playback to finish
```
Release resources:
```dart
2019-11-28 06:59:38 +00:00
await player.dispose();
```
2020-01-01 13:49:21 +00:00
2020-04-20 04:19:43 +00:00
Catch player error:
```dart
player.setUrl("https://s3.amazonaws.com/404-file.mp3").catchError((error) {
// catch audio error ex: 404 url, wrong url ...
print(error);
});
```
2020-04-07 02:06:40 +00:00
## Platform specific configuration
2020-04-05 08:30:26 +00:00
2020-04-07 02:06:40 +00:00
### Android
If you wish to connect to non-HTTPS URLS, add the following attribute to the `application` element of your `AndroidManifest.xml` file:
```xml
< application . . . android:usesCleartextTraffic = "true" >
```
2020-04-05 08:30:26 +00:00
### iOS
2020-04-07 02:06:40 +00:00
If you wish to connect to non-HTTPS URLS, add the following to your `Info.plist` file:
2020-04-05 08:30:26 +00:00
```xml
< key > NSAppTransportSecurity< / key >
< dict >
< key > NSAllowsArbitraryLoads< / key >
< true / >
< key > NSAllowsArbitraryLoadsForMedia< / key >
< true / >
< / dict >
```
2020-04-07 02:06:40 +00:00
### MacOS
2020-04-05 08:30:26 +00:00
2020-04-07 02:06:40 +00:00
To allow your MacOS application to access audio files on the Internet, add the following to your `DebugProfile.entitlements` and `Release.entitlements` files:
2020-04-05 08:30:26 +00:00
```xml
2020-04-07 02:06:40 +00:00
< 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:
```xml
< key > NSAppTransportSecurity< / key >
< dict >
< key > NSAllowsArbitraryLoads< / key >
< true / >
< key > NSAllowsArbitraryLoadsForMedia< / key >
< true / >
< / dict >
2020-04-05 08:30:26 +00:00
```
2020-01-01 13:49:21 +00:00
## Todo
* FLAC support
* Gapless playback