Android - Как получить метаданные из живого аудиопотока / канала интернет-радио, используя URL
В настоящее время я работаю над приложением Android для потоковой передачи музыки / интернет-радио, и я очень признателен, если вы поможете мне в этом. Заранее спасибо!
Я могу играть музыку, но я не знаю, как получить информацию, такую как текущая песня, обложка альбома и т. Д. Это действительно помогло бы моему приложению, если бы я мог получить эту информацию.
У меня вопрос, как я узнаю или где я получу информацию о том, какая песня в настоящее время играет? Как я уже заметил, VLC может сделать это с помощью только ссылки.
Вот скриншот с VLC.
Вот несколько ссылок, которые я пробовал:
http://tar.stream.dev.al:9078/listen.pls
http://84.46.147.81:80/m1/mp3
http://stream.radioeger.hu:18000/listen.pls
http://95.110.186.253:8020/magic.mp3
2 ответа
Вы можете получить аудио метаданные через MediaMetadataRetriever, но MediaMetadataRetriever не работает с URL-адресами в определенных версиях Android. Итак, используйте https://github.com/wseemann/FFmpegMediaMetadataRetriever в качестве обходного пути, я предлагаю попробовать его.
Большинство радиопотоков используют потоковую передачу http. Сжатые аудиоданные обычно чередуются с метаданными. Поэтому вам понадобится способ обрабатывать поток http в режиме реального времени, извлекая любые метаданные. Для Shoutcast метаданные являются частью протокола, вот пример из Streamripper:
Для классической потоковой передачи по протоколу HTTP протокол не включает метаданные, но включает контейнер. В этом случае вы также должны элементарно декодировать контейнер. Опять же, вот пример из Streamripper. Этот использует libvorbis для проверки контейнера и получения метаданных. Тем не менее, чтобы сделать все правильно, нужно сделать несколько магических трюков:
НТН