load static method
Loads a sound from a file url.
The file extension in the url will be replaced according to the browser's
capability to playback certain kinds of audio types. For example if the
url ends with the 'mp3' extension and the browser does not support mp3
playback, the file extension will be replaced with 'ogg' or 'ac3'. You
can customize this behavior by changing the soundLoadOptions
.
var sound = await Sound.load("assets/audio/hello.mp3");
sound.play();
Implementation
static Future<Sound> load(String url,
[SoundLoadOptions? soundLoadOptions]) async {
final options = soundLoadOptions ?? Sound.defaultLoadOptions;
final audioUrls = options.getOptimalAudioUrls(url);
final audioContext = WebAudioApiMixer.audioContext;
final aggregateError = AggregateError('Error loading sound.');
for (var audioUrl in audioUrls) {
try {
final httpRequest =
await HttpRequest.request(audioUrl, responseType: 'arraybuffer');
final audioData = httpRequest.response as ByteBuffer;
final audioBuffer = await audioContext.decodeAudioData(audioData);
return WebAudioApiSound._(audioBuffer);
} catch (e) {
final loadError = LoadError('Failed to load $audioUrl', e);
aggregateError.errors.add(loadError);
}
}
if (options.ignoreErrors) {
return MockSound.load(url, options);
} else {
throw aggregateError;
}
}