Итак, отвечу сам себе. Вкратце ответ выглядит так:
for(int i = 0; i < mMediaPlayer.getTrackInfo().length; i++ ){
MediaPlayer.TrackInfo trackInfo = mMediaPlayer.getTrackInfo()[i];
if(trackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT){
mediaPlayer.selectTrack(i);
mediaPlayer.deselectTrack(i);
}
}
Теперь опишу что тут происходит.
После того как плеер загрузил данные, у него можно запросить список доступных треков (видео, аудио, субтитры). Каждый трек может находиться в состоянии selected (проигрывается) и deselected (не проигрывается). При старте плеера, трек с аудио и видео автоматически получают состояние selected, а остальные deselected. В Android 4.4 (на TV Box с которым я работаю) по какой то причине трек с субтитрами все равно проигрывается, даже не смотря на то, что он не выбран.
Чтобы отключить этот трек, его надо сначала найти в массиве всех треков, после чего присвоить ему статус selected и сразу же его убрать. Таким образом мы полноценно выключаем этот трек из проигрывания.
Внимание! При попытке вызвать mediaPlayer.deselectTrack(i); у трека, который не был выбран, будет выброшен RuntimeException о котором не упоминается в документации!
Ну и
оригинальная статься о MediaPlayer где можно подробнее узнать о методах mediaPlayer.selectTrack(i); и mediaPlayer.deselectTrack(i);
Внимание 2! В AOSP существует баг, роняющий плеер на некоторых видео со встроенными субтитрами. Обсуждение в группе AOSP
В настоящий момент решение неизвестно