Создать демультиплексор для MPEG 2 TS в Android
У меня есть требование, где мне нужно извлечь теги ID3 из MPEG2 TS(HLS STREAM). MPEG2 имеет ограниченную поддержку в Android в отношении воспроизведения файла. Но моя задача - извлечь теги ID3 (проигрывать файл не обязательно). Поэтому я не занимаюсь кодеками (кодирование и декодирование).
Я исследовал следующие варианты:
libstagefright и OpenMax: движок воспроизведения, реализованный Google из Android 2.0. Он имеет MediaExtractor, отвечающий за извлечение данных дорожки и соответствующих метаданных из базовой файловой системы или потока http. Но согласно этому посту, добавив видеокодек в Android, мне нужно собрать собственную прошивку или собственный медиаплеер. Надеюсь, мне не нужно идти по этому пути. Больше информации о stagefright и openMax можно найти здесь:
Архитектура Android Stagefright Media Player
Интеграция пользовательских кодеков Wrapper в Android
Как интегрировать декодер в мультимедийный фреймворк
Компиляция и использование FFMPEG: полное кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео. Мы можем демультиплексировать файлы TS с этой библиотекой, как упомянуто здесь:
FFmpeg - Извлечение видео и аудио из файла транспортного потока (.ts).
Но я не уверен, смогу ли я извлечь теги ID3 из потока HLS. Возможно, libavformat сможет сделать это, но мне все еще нужно придумать механизм для передачи метаданных о прочтении в мое приложение.
Компиляция vlc для android: я скомпилировал vlc для android и внес некоторые изменения в транспортный модуль в компоненте demux для извлечения тегов, но он не может воспроизводить все потоки, которые я ему предоставляю.
Просматривая эти варианты, я все еще не могу понять, как этого добиться. Я не хочу создавать медиаплеер, так как я не буду воспроизводить файлы и не хочу создавать собственную прошивку. Использование ffmpeg представляется наиболее приемлемым вариантом, но я хочу попробовать это без использования сторонней библиотеки или библиотеки с открытым исходным кодом. Мои вопросы:
Возможно ли вообще создать демультиплексор с нуля, который будет работать на Android?
Если возможно, то как это сделать?
Какие-либо варианты, которые я пропустил?
Я новичок в этом. Любая помощь будет принята с благодарностью.. Спасибо