У меня есть приложение для Android, которое транслирует видео с помощью ExoPlayer. Я хочу добавить языковую поддержку в потоки. Какие языки будет иметь поток, должны быть взяты из метаданных потока.
В библиотеке ExoPlayer я нашел способ получить список треков из потока следующим образом:
player.getCurrentTrackGroups().get(i).getFormat(i) //player is SimpleExoPlayer class
но это дает мне некоторую необработанную информацию, здесь есть видео, аудио и другие треки, которые нужно пометить. печатные форматы выглядят следующим образом:
Формат (1/100, ноль, видео / AVC, -1, ноль, [1920, 1080, -1.0], [-1, -1])
Формат (1/8292, ноль, application / cea-608, -1, ноль, [-1, -1, -1.0], [-1, -1])
Формат (1/200, ноль, аудио / MPEG-L2, -1,, [-1, -1, -1.0], [2, 48000])
Формат (1/201, ноль, аудио / MPEG-L2, -1,, [-1, -1, -1.0], [2, 48000])
Интересно, есть ли более простой способ получить только аудиодорожки и их необходимую информацию для переключения между ними на потом?
Моя следующая проблема - я не знаю, как переключаться между звуковыми дорожками. Я искал и получил ответ, что это делается с помощью следующего кода:
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
этот код взят из этого ответа.
Проблема в том, что мой класс SimpleExoPlayer не имеет этой функции. У меня есть exoplayer 2.8.2, и ни класс SimpleExoPlayer , ни ExoPlayer не получили эту функцию. Так что я застрял там.
Другой найденный ответ был из класса DefaultTrackSelector, который имеет следующее лицо:
trackSelector.setParameters( trackSelector.getParameters().buildUpon().setPreferredAudioLanguage("eng"));
это выглядит просто и хорошо, но не все потоки помечены так. Многие треки не имеют строки для названия языка. Единственное, что у них отличается - это строка идентификатора. И передача строки id не работает.