Skip to content

Embedded Video Subtitle #2095

Closed
Closed
@langaliamayank

Description

@langaliamayank

Media3 Exoplayer Not showing Embedded Video Subtitle for HLS(M3U8) Stream

https://flux1.csidigital.net/GPU4/hls_live/INSP_HD/playlist.m3u8
For getting render type = 5 - TRACK_TYPE_METADATA
mimetype - application/id3

I checked the above streaming URL in VLC player and The OPlayer.
We are getting subtitles but when I tried with Exo player media3 v1.4.1 not work.

DefaultTrackSelector.Parameters parameters = mTrackSelector.getParameters();
        DefaultTrackSelector.Parameters.Builder builder = parameters.buildUpon();
        final MappingTrackSelector.MappedTrackInfo mappedTrackInfo = mTrackSelector.getCurrentMappedTrackInfo();
        if (mappedTrackInfo == null) {
            return;
        }
        for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
            if (mappedTrackInfo.getRendererType(i) == C.TRACK_TYPE_TEXT) {
                builder
                        .clearOverridesOfType(i)
                        .setRendererDisabled(C.TRACK_TYPE_VIDEO, false)
                        .setSelectUndeterminedTextLanguage(true)
                .setPreferredTextRoleFlags(C.ROLE_FLAG_CAPTION);

                TrackGroupArray trackGroupArray = mappedTrackInfo.getTrackGroups(i);
                for (int trackIndex = 0; trackIndex < trackGroupArray.length; ++trackIndex) {
                    Format format = trackGroupArray.get(trackIndex).getFormat(0);
                    if (format.id != null && (format.sampleMimeType.equalsIgnoreCase("application/cea-608")
                            || format.sampleMimeType.equalsIgnoreCase("application/cea-708"))) {
                        builder.addOverride(new TrackSelectionOverride(trackGroupArray.get(trackIndex), 0));
                    } else {
                        builder.addOverride(new TrackSelectionOverride(trackGroupArray.get(trackIndex), 0));
                    }

                }


                mTrackSelector.setParameters(builder);
            }
        }
 
public int getTrackCountSubtitle() {
        if (mTrackSelector != null) {
            final MappingTrackSelector.MappedTrackInfo mappedTrackInfo = mTrackSelector.getCurrentMappedTrackInfo();
            if (mappedTrackInfo != null) {
                for (int rendererIndex = 0; rendererIndex < mappedTrackInfo.getRendererCount(); rendererIndex++) {
                    Logger.e("getTrackCountSubtitle" + mappedTrackInfo.getRendererType(rendererIndex));
                    if (mappedTrackInfo.getRendererType(rendererIndex) == C.TRACK_TYPE_TEXT) {
                        final TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
                        return trackGroups.length;
                    }
                }
            }
        }
        return 0;
    }

getTrackCountSubtitle method return 0 because render type return 5 not 3.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions