Switching the language of subtitles - devrath/MediaAlchemySuite GitHub Wiki

Listing the list subtitles

    @OptIn(UnstableApi::class)
    fun listAvailableSubtitleLanguages(): List<String> {
        val controller = _controllerState.value ?: return emptyList()
        return controller.currentTracks.groups
            .filter { it.type == C.TRACK_TYPE_TEXT }
            .flatMap { group ->
                (0 until group.length)
                    .mapNotNull { index ->
                        group.getTrackFormat(index).language
                    }
            }.distinct()
    }
  • This listAvailableSubtitleLanguages() 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 language selection for the subtitle

fun onSubtitleLanguageSelected(language: String) {
        _controllerState.value?.let { controller ->
            captionsEnabled = true
            controller.trackSelectionParameters = controller.trackSelectionParameters
                .buildUpon()
                .setPreferredTextLanguage(language)
                .setTrackTypeDisabled(C.TRACK_TYPE_TEXT, false)
                .build()
        }
}
⚠️ **GitHub.com Fallback** ⚠️