From 906728f51b9537e337ba2cac76e488f377aa3d7c Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 11 Nov 2022 19:05:05 +0100 Subject: [PATCH] attempt to fix captions --- .../libretube/ui/fragments/PlayerFragment.kt | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 748ad2608..390506505 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -149,7 +149,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { * for the player view */ private lateinit var exoPlayerView: StyledPlayerView - private var subtitle = mutableListOf() + private var subtitles = mutableListOf() /** * user preferences @@ -1046,7 +1046,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { val videoItem: MediaItem = MediaItem.Builder() .setUri(videoUri) - .setSubtitleConfigurations(subtitle) + .setSubtitleConfigurations(subtitles) .build() val videoSource: MediaSource = @@ -1067,7 +1067,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { private fun setHLSMediaSource(uri: Uri) { val mediaItem: MediaItem = MediaItem.Builder() .setUri(uri) - .setSubtitleConfigurations(subtitle) + .setSubtitleConfigurations(subtitles) .build() exoPlayer.setMediaItem(mediaItem) } @@ -1118,11 +1118,11 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { val (videosNameArray, videosUrlArray) = getAvailableResolutions() // create a list of subtitles - subtitle = mutableListOf() + subtitles = mutableListOf() val subtitlesNamesList = mutableListOf(context?.getString(R.string.none)!!) val subtitleCodesList = mutableListOf("") - streams.subtitles!!.forEach { - subtitle.add( + streams.subtitles.orEmpty().forEach { + subtitles.add( SubtitleConfiguration.Builder(it.url!!.toUri()) .setMimeType(it.mimeType!!) // The correct MIME type (required). .setLanguage(it.code) // The subtitle language (optional). @@ -1133,13 +1133,17 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { } // set the default subtitle if available + val newParams = trackSelector.buildUponParameters() if (PlayerHelper.defaultSubtitleCode != "" && subtitleCodesList.contains(PlayerHelper.defaultSubtitleCode)) { - val newParams = trackSelector.buildUponParameters() + newParams .setPreferredTextLanguage(PlayerHelper.defaultSubtitleCode) .setPreferredTextRoleFlags(C.ROLE_FLAG_CAPTION) - trackSelector.setParameters(newParams) + } else { + newParams.setPreferredTextLanguage(null) } + trackSelector.setParameters(newParams) + // set media source and resolution in the beginning setStreamSource( streams, @@ -1334,7 +1338,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { // none selected // disable captions trackSelector.buildUponParameters() - .setPreferredTextLanguage("") + .setPreferredTextLanguage(null) } // set the new caption language