I am working on TV app for FireTV.
Amazon store have rejected my app due to CC issue. Matter is that CC(Closed Caption) is not working fine for some of the videos.
I am using Exoplayer player with custom CC(Closed Caption) button. If button ON then CC is enable and show the closed caption and if button OFF then CC is disable to show.
I am using below code for detecting CC is coming or not in Videos.
private boolean checkAndSetClosedCaptions() {
// This is the body of the logic for see if there are even video tracks
// It also does some field setting
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = MainActivity.trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo == null) {
return false;
}
for (int i = 0; i < mappedTrackInfo.length; i++) {
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(i);
if (trackGroups.length != 0) {
switch (player.getRendererType(i)) {
case C.TRACK_TYPE_TEXT:
return true;
}
}
}
return false;
}
This code is working fine when CC is coming then 'checkAndSetClosedCaptions' return true and not coming then return false.
But for some videos, CC is coming with Unknown name.
In this case, 'checkAndSetClosedCaptions' is return true but close caption is not showing when i enabled cc from button. Video URL : https://redirect.field59.com/video/608fd60f54c844ccabe023a8126c2d0b2158201a.m3u8
I am using below code for enable and disable Closed caption for English language.
private void captionEnable() {
MainActivity.trackSelector.setParameters(new DefaultTrackSelector.ParametersBuilder()
.setRendererDisabled(C.TRACK_TYPE_VIDEO, false)
.clearSelectionOverrides(C.TRACK_TYPE_VIDEO)
.setPreferredTextLanguage("en")
.setPreferredAudioLanguage("en")
.build());
SharedPreferenceUtils.getInstance(activity).setValue(AppConst.CLOASED_CAPTION, true);
selectTracksButton.setImageResource(R.drawable.player_button_cc_select_blue);
onOff.setText("On");
}
private void captionDisable() {
MainActivity.trackSelector.setParameters(new DefaultTrackSelector.ParametersBuilder()
.setRendererDisabled(C.TRACK_TYPE_VIDEO, true)
.clearSelectionOverrides(C.TRACK_TYPE_VIDEO)
.setPreferredTextLanguage("en")
.setPreferredAudioLanguage("en")
.build());
SharedPreferenceUtils.getInstance(activity).setValue(AppConst.CLOASED_CAPTION, false);
selectTracksButton.setImageResource(R.drawable.player_button_cc_selector);
onOff.setText("Off");
}
How to hide the CC(Closed Caption) button when I found above condition.