tv-samples icon indicating copy to clipboard operation
tv-samples copied to clipboard

[JetStreamCompose] External subtitles not displayed

Open evilsloth opened this issue 2 years ago • 2 comments

According to the code, subtitles should be displayed by default if they are defined in movies.json. And in the example there are this subtitles defined for every sample movie:

  {
    "id": "8daa7d22d13a9",
    "videoUri": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
    "subtitleUri": "https://thepaciellogroup.github.io/AT-browser-tests/video/subtitles-en.vtt",

and here is the code that loads the subtitles:

    val exoPlayer = rememberExoPlayer(context)
    LaunchedEffect(exoPlayer, movieDetails) {
        exoPlayer.setMediaItem(
            MediaItem.Builder()
                .setUri(movieDetails.videoUri)
                .setSubtitleConfigurations(
                    if (movieDetails.subtitleUri == null) {
                        emptyList()
                    } else {
                        listOf(
                            MediaItem.SubtitleConfiguration.Builder(Uri.parse(movieDetails.subtitleUri))
                                .setMimeType("application/vtt")
                                .setLanguage("en")
                                .setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
                                .build()
                        )
                    }
                ).build()
        )
        exoPlayer.prepare()
    }

But the subtitles are never displayed. Even if we enable default overlay (useController = true), there is no option to enable subtitles there, like it never even loads them.

Is this some exoplayer issue or some problem with using it with compose? I tried to build the sample from the time this code was first added. But it doesn't work either.

evilsloth avatar Feb 10 '24 21:02 evilsloth

Ok, so I finally found a culprit for anyone interested. If you use the default MediaSourceFactory external subtitles start to work fine. Just delete this:

        .setMediaSourceFactory(
            ProgressiveMediaSource.Factory(DefaultDataSource.Factory(context))
        )

evilsloth avatar Feb 17 '24 17:02 evilsloth

Removing the media source factory doesnt fix the issue. Still not able to show the subtitles

darkmat13r avatar Jul 17 '24 19:07 darkmat13r