Listing the list of audio types
@OptIn(UnstableApi::class)
fun listAvailableAudioLanguages(): List<String> {
val controller = _controllerState.value ?: return emptyList()
return controller.currentTracks.groups
.filter { it.type == C.TRACK_TYPE_AUDIO }
.flatMap { group ->
(0 until group.length)
.mapNotNull { index ->
group.getTrackFormat(index).language
}
}.distinct()
}
- This
listAvailableAudioLanguages()
iterates over the media for all the languages available for subtitle tracks.
- For example, if a video has English, Spanish, and French subtitles, this function would return a list like ["en", "es", "fr"]
Applying audio selection for the video
fun onAudioLanguageSelected(language: String) {
_controllerState.value?.let { controller ->
controller.trackSelectionParameters = controller.trackSelectionParameters
.buildUpon()
.setPreferredAudioLanguage(language)
.build()
}
}