Задать вопрос
@Pluzhnik
Wowza, Android

Как отключить субтитры в Android MediaPlayer?

Собственно вся суть вопроса отражена в названии.
Есть потоковое видео, которое я не могу изменить. В нем есть субтитры. На Android 4.4 они отображаются, на версии 5.0 нет. Как их выключить на 4.4?
Используется системный MediaPlayer
  • Вопрос задан
  • 1644 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Pluzhnik Автор вопроса
Wowza, Android
Итак, отвечу сам себе. Вкратце ответ выглядит так:

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
В настоящий момент решение неизвестно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы