Ищите рабочий пример addTimedTextSource для добавления субтитров к видео из файла .srt в Android 4.1
Я пытался использовать файл .srt для синхронизированного источника текста (доступно только в Android 4.1+http://developer.android.com/about/versions/android-4.1.html#Multimedia) Первая проблема связана с получением дескриптора файла для файла .srt (в папке assets, как еще вы могли бы связать его в вашем приложении?). Файл сжимается автоматически, поэтому вы выигралине сможет даже увидеть файл без изменения параметров компиляции или выполнения пользовательской сборки. Самым простым решением было переименовать файл .srt в .jpg, чтобы он не сжимался и метод openFD все еще работал. Я сейчас добавляю TimedTextSource с:
_myMP.addTimedTextSource(getAssets().openFd("captions.jpg").getFileDescriptor(), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
Теперь файл загружается правильно и, используя myMP.getTrackInfo (), чтобы получить список дорожек, может видеть, что после добавления источника синхронизированного текста 6-ая дорожка имеет тип «3» который является синхронизированным типом текстовой дорожки. Я использовал selectTrack, чтобы выбрать этот трек, как сказано в документации Google, но после этого в моем TimedTextListener не было никаких подписей:
_myMP.setOnTimedTextListener(new OnTimedTextListener(){
@Override
public void onTimedText(MediaPlayer mp, TimedText text) {
if (text!=null)
Log.d("TimedText", text.getText());
}
});
Запускается только один раз (у меня есть 20 временных событий в файле), но текстовый параметр всегда равен нулю. Я выполнил поиск и не могу найти ни одного примера работающего кода с использованием timeText, и он не отображается ни в одном из примеров проектов. Буквально нет документации, кроме api docs от Google, но, насколько я могу судить, никто не опубликовал Рабочий пример этого пока. Я тестирую это на Google Nexus обновлен до Android 4.2