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


person steven0529    schedule 05.08.2014    source источник
comment
вы нашли решение для этого? что сработало для вас?   -  person swalkner    schedule 23.08.2016


Ответы (2)


вы можете получать метаданные аудио через MediaMetadataRetriever, но MediaMetadataRetriever не работает с URL-адресами в некоторых версиях Android. Итак, используйте FFmpegMediaMetadataRetriever в качестве временного решения, я предлагаю попробовать его.

person Md Abdul Gafur    schedule 05.08.2014
comment
Как получить имя исполнителя текущей песни? - person Bhavesh Butani; 28.02.2019

Большинство радиопотоков используют потоковую передачу по протоколу http. Сжатые аудиоданные обычно чередуются с метаданными. Таким образом, вам понадобится способ обрабатывать http-поток в реальном времени, извлекая любые метаданные. Для Shoutcast метаданные являются частью протокола, вот пример из streamripper:

http://streamripper.cvs.sourceforge.net/viewvc/streamripper/streamripper/ripper.c?revision=1.1.1.1&view=markup

Для классической потоковой передачи HTTP протокол не включает метаданные, но контейнер включает. В этом случае вам также придется элементарно расшифровать контейнер. Опять же, пример из Streamripper. Он использует libvorbis для проверки контейнера и получения метаданных. Однако, чтобы все исправить, нужно проделать некоторые фокусы:

http://streamripper.cvs.sourceforge.net/viewvc/streamripper/sripper_1x/lib/ripogg.c?revision=1.22&view=markup

HTH

person Mark Meyer    schedule 05.08.2014