getOptimalAudioUrls method
Determine which audio files are the most likely to play smoothly, based on the supported types and formats available.
Implementation
List<String> getOptimalAudioUrls(String primaryUrl) {
final availableTypes = AudioLoader.supportedTypes.toList();
if (!mp3) availableTypes.remove('mp3');
if (!mp4) availableTypes.remove('mp4');
if (!ogg) availableTypes.remove('ogg');
if (!opus) availableTypes.remove('opus');
if (!ac3) availableTypes.remove('ac3');
if (!wav) availableTypes.remove('wav');
final urls = <String>[];
final regex = RegExp(r'([A-Za-z0-9]+)$');
final primaryMatch = regex.firstMatch(primaryUrl);
if (primaryMatch == null) return urls;
if (availableTypes.remove(primaryMatch.group(1))) urls.add(primaryUrl);
if (alternativeUrls != null) {
for (var alternativeUrl in alternativeUrls!) {
final alternativeMatch = regex.firstMatch(alternativeUrl);
if (alternativeMatch == null) continue;
if (availableTypes.contains(alternativeMatch.group(1))) {
urls.add(alternativeUrl);
}
}
} else {
for (var availableType in availableTypes) {
urls.add(primaryUrl.replaceAll(regex, availableType));
}
}
return urls;
}