Closed
Description
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.