Поймай метаданные из Icecast-аудио-потока

1791
LaPriWa

Я хочу получать метаданные с этой станции:

http://ice1.somafm.com/deepspaceone-128-mp3 

Чтобы добиться этого, я сделал следующий запрос через оболочку:

$ GET -H "Icy-MetaData: 1" http://ice1.somafm.com/deepspaceone-128-mp3 

Хотя я ожидал получить Icy-metaintзначение, оно не выдает никакого вывода.

Я также сделал следующий запрос:

$ HEAD http://ice1.somafm.com/deepspaceone-128-mp3 

Это дает:

200 OK Cache-Control: no-cache, no-store Connection: Close Date: Sun, 24 Apr 2016 07:23:14 GMT Pragma: no-cache Server: Icecast 2.4.0-kh3 Content-Type: audio/mpeg Expires: Mon, 26 Jul 1997 05:00:00 GMT Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type Access-Control-Allow-Methods: GET, OPTIONS, HEAD Access-Control-Allow-Origin: * Client-Date: Sun, 24 Apr 2016 07:21:38 GMT Client-Peer: 173.239.76.148:80 Client-Response-Num: 1 Icy-Br: 128 Icy-Genre: Ambient Space Icy-Name: Deep Space One: Deep ambient electronic and space music. [SomaFM] Icy-Notice1: <BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR> Icy-Notice2: SHOUTcast Distributed Network Audio Server/Linux v1.9.5<BR> Icy-Pub: 0 Icy-Url: http://somafm.com 

Что я делаю неправильно?

1

1 ответ на вопрос

1
TBR

You should verify, that the command you are using really sends that header.

Using cURL it works just fine (see last line of output):

$ curl -H "Icy-MetaData: 1" -v "http://ice1.somafm.com/deepspaceone-128-mp3" >/dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 173.239.76.148... 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to ice1.somafm.com (173.239.76.148) port 80 (#0) > GET /deepspaceone-128-mp3 HTTP/1.1 > Host: ice1.somafm.com > User-Agent: curl/7.45.0 > Accept: */* > Icy-MetaData: 1 > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Content-Type: audio/mpeg < Date: Mon, 25 Apr 2016 04:16:47 GMT < icy-br:128 < icy-genre:Ambient Space < icy-name:Deep Space One: Deep ambient electronic and space music. [SomaFM] < icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR> < icy-notice2:SHOUTcast Distributed Network Audio Server/Linux v1.9.5<BR> < icy-pub:0 < icy-url:http://somafm.com < Server: Icecast 2.4.0-kh3 < Cache-Control: no-cache, no-store < Pragma: no-cache < Access-Control-Allow-Origin: * < Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type < Access-Control-Allow-Methods: GET, OPTIONS, HEAD < Connection: Close < Expires: Mon, 26 Jul 1997 05:00:00 GMT < icy-metaint:45000 < 
Большое спасибо! : -D У меня есть последний вопрос: почему я должен перенаправить вывод в / dev / null? LaPriWa 8 лет назад 0
Это было только для того, чтобы ограничить вывод заголовками, перенаправив тело в / dev / null. Для вашего случая использования вы, вероятно, захотите переварить поток данных и проанализировать в сигнальном «метане». TBR 8 лет назад 1
Лично я бы, наверное, посмотрел на интерфейс их веб-сайта, поскольку там тоже отображаются метаданные. Это может быть проще, чем вырезать его из ручья. TBR 8 лет назад 1
Интерфейс веб-сайта может быть изменен в любое время, что может привести к поломке программ, зависящих от него. Спецификация Shoutcast не изменится в ближайшее время и будет более безопасным методом. Использование метаданных также переносимо на другие серверы shoutcast / icecast, а не только на SoMaFM (кстати, отличная коллекция интернет-радиостанций) Hydranix 8 лет назад 1

Похожие вопросы