从shoutcast iOS编程中获取元数据

时间:2012-11-26 20:20:34

标签: iphone ios metadata shoutcast webradio

您好我正在尝试在iOS中解析Shoutcast无线电的元数据。

在尝试了许多提交的解决方案之后,我最终得到了一段仍然给我错误的代码

响应字符串:找不到ICY 404资源 icy-notice1:
SHOUTcast分布式网络音频服务器/ Linux v1.9.8
icy-notice2:未找到所请求的资源

我试图解析元数据的代码

NSURL *url = [NSURL URLWithString:@"http://relay.181.fm:8052/7.html"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];

   [request addValue:@"1" forHTTPHeaderField:@"icy-metadata"];
   [request addValue:@"Winamp 5/3" forHTTPHeaderField:@"User-Agent"];
   [request addValue:@"audio/mpeg" forHTTPHeaderField:@"Content-Type"];

[request setHTTPMethod:@"GET"];

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString* responseString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];

NSLog(@"Response String: %@", responseString);

关于问题的任何想法,感谢帮助

3 个答案:

答案 0 :(得分:3)

并非所有SHOUTcast服务器都允许访问7.html。还有另外两种方法可以获取这些数据。

SHOUTcast的XML数据通常可用,但需要服务器的密码。您可以使用/admin.cgi?mode=viewxml&page=4来申请。

您还可以直接从流中读取元数据。这更麻烦,但完全可能,而且不太困难。有关详细信息,请参阅此答案:https://stackoverflow.com/a/4914538/362536

答案 1 :(得分:0)

我为那些不想/不想从流中读取元数据的人找到了解决方案。 这是我见过的最简单的解决方案。

http://www.fvalente.org/blog/2012/03/15/shoutcast-metadata-the-easy-way/

布拉德在上面的帖子中说道

  

并非所有SHOUTcast服务器都允许访问7.html。

因此,最好检查您要获取元数据的服务器是否具有/7.html页面

答案 2 :(得分:0)

当前歌曲也会显示在/ played.html页面上,但它可以与/7.html一起在网络浏览器中使用。但是,当我在Windows机器上尝试使用fiddler2时,我发现ICY 404资源未找到错误