Update documentation for audio sources.
This commit is contained in:
parent
67d1b7450d
commit
e032b8137f
107
README.md
107
README.md
|
@ -15,13 +15,13 @@ A Flutter plugin to play audio from URLs, files, assets, DASH/HLS streams and pl
|
||||||
| play/pause/stop/seek | ✅ | ✅ | ✅ | ✅ |
|
| play/pause/stop/seek | ✅ | ✅ | ✅ | ✅ |
|
||||||
| set volume | ✅ | ✅ | (untested) | ✅ |
|
| set volume | ✅ | ✅ | (untested) | ✅ |
|
||||||
| set speed | ✅ | ✅ | ✅ | ✅ |
|
| set speed | ✅ | ✅ | ✅ | ✅ |
|
||||||
| clip audio | ✅ | | | ✅ |
|
| clip audio | ✅ | ✅ | (untested) | ✅ |
|
||||||
| dispose | ✅ | ✅ | ✅ | ✅ |
|
| playlists | ✅ | ✅ | (untested) | ✅ |
|
||||||
|
| looping | ✅ | ✅ | (untested) | ✅ |
|
||||||
|
| shuffle | ✅ | ✅ | (untested) | ✅ |
|
||||||
|
| compose audio | ✅ | ✅ | (untested) | ✅ |
|
||||||
|
| gapless playback | ✅ | ✅ | (untested) | |
|
||||||
| report player errors | ✅ | ✅ | ✅ | ✅ |
|
| report player errors | ✅ | ✅ | ✅ | ✅ |
|
||||||
| playlists | ✅ | | | ✅ |
|
|
||||||
| looping | ✅ | | | ✅ |
|
|
||||||
| shuffle | ✅ | | | ✅ |
|
|
||||||
| gapless playback | ✅ | | | |
|
|
||||||
|
|
||||||
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).
|
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).
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ var duration = await player.setUrl('https://foo.com/bar.mp3');
|
||||||
Standard controls:
|
Standard controls:
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
player.play();
|
player.play(); // Usually you don't want to wait for playback to finish.
|
||||||
await player.seek(Duration(seconds: 10));
|
await player.seek(Duration(seconds: 10));
|
||||||
await player.pause();
|
await player.pause();
|
||||||
await player.stop();
|
await player.stop();
|
||||||
|
@ -50,18 +50,101 @@ await player.setClip(start: Duration(seconds: 10), end: Duration(seconds: 20));
|
||||||
await player.play(); // Waits for playback to finish
|
await player.play(); // Waits for playback to finish
|
||||||
```
|
```
|
||||||
|
|
||||||
Release resources:
|
Gapless playlists:
|
||||||
|
|
||||||
|
```dart
|
||||||
|
await player.load(
|
||||||
|
ConcatenatingAudioSource(
|
||||||
|
audioSources: [
|
||||||
|
AudioSource.uri(Uri.parse("https://example.com/track1.mp3")),
|
||||||
|
AudioSource.uri(Uri.parse("https://example.com/track2.mp3")),
|
||||||
|
AudioSource.uri(Uri.parse("https://example.com/track3.mp3")),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// Jump to the beginning of track3.mp3.
|
||||||
|
player.seek(Duration(milliseconds: 0), index: 2);
|
||||||
|
```
|
||||||
|
|
||||||
|
Looping and shuffling:
|
||||||
|
|
||||||
|
```dart
|
||||||
|
player.setLoopMode(LoopMode.off); // no looping (default)
|
||||||
|
player.setLoopMode(LoopMode.all); // loop playlist
|
||||||
|
player.setLoopMode(LoopMode.one); // loop current item
|
||||||
|
player.setShuffleModeEnabled(true); // shuffle except for current item
|
||||||
|
```
|
||||||
|
|
||||||
|
Composing audio sources:
|
||||||
|
|
||||||
|
```dart
|
||||||
|
player.load(
|
||||||
|
// Loop its child 4 times
|
||||||
|
LoopingAudioSource(
|
||||||
|
count: 4,
|
||||||
|
// Play children one after the other
|
||||||
|
audioSource: ConcatenatingAudioSource(
|
||||||
|
audioSources: [
|
||||||
|
// Play a regular media file
|
||||||
|
ProgressiveAudioSource(Uri.parse("https://example.com/foo.mp3")),
|
||||||
|
// Play a DASH stream
|
||||||
|
DashAudioSource(Uri.parse("https://example.com/audio.mdp")),
|
||||||
|
// Play an HLS stream
|
||||||
|
HlsAudioSource(Uri.parse("https://example.com/audio.m3u8")),
|
||||||
|
// Play a segment of the child
|
||||||
|
ClippingAudioSource(
|
||||||
|
audioSource: ProgressiveAudioSource(Uri.parse("https://w.xyz/p.mp3")),
|
||||||
|
start: Duration(seconds: 25),
|
||||||
|
end: Duration(seconds: 30),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Releasing resources:
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
await player.dispose();
|
await player.dispose();
|
||||||
```
|
```
|
||||||
|
|
||||||
Catch player error:
|
Catching player errors:
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
player.setUrl("https://s3.amazonaws.com/404-file.mp3").catchError((error) {
|
try {
|
||||||
// catch audio error ex: 404 url, wrong url ...
|
await player.setUrl("https://s3.amazonaws.com/404-file.mp3");
|
||||||
print(error);
|
} catch (e) {
|
||||||
|
print("Error: $e");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Listening to state changes:
|
||||||
|
|
||||||
|
- AudioPlayer.playbackStateStream
|
||||||
|
- AudioPlayer.durationStream
|
||||||
|
- AudioPlayer.bufferingStream
|
||||||
|
- AudioPlayer.icyMetadataStream
|
||||||
|
- AudioPlayer.bufferedPositionStream
|
||||||
|
- AudioPlayer.fullPlaybackStateStream
|
||||||
|
- AudioPlayer.playbackEventStream
|
||||||
|
- AudioPlayer.currentIndexStream
|
||||||
|
- AudioPlayer.loopModeStream
|
||||||
|
- AudioPlayer.shuffleModeEnabledStream
|
||||||
|
- AudioPlayer.durationStream
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
player.playbackStateStream.listen((state) {
|
||||||
|
switch (state) {
|
||||||
|
case AudioPlaybackState.none: ...
|
||||||
|
case AudioPlaybackState.stopped: ...
|
||||||
|
case AudioPlaybackState.paused: ...
|
||||||
|
case AudioPlaybackState.playing: ...
|
||||||
|
case AudioPlaybackState.connecting: ...
|
||||||
|
case AudioPlaybackState.completed: ...
|
||||||
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue