从shoutcast获取元数据的iOS编程

4

你好,我正在尝试在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个回答

4
并非所有SHOUTcast服务器都允许访问7.html。有两种其他方法可以获取该数据。
SHOUTcast的XML数据通常可用,但需要服务器密码。您可以使用/admin.cgi?mode=viewxml&page=4请求它。
您还可以直接从流中读取元数据。这更加繁琐,但完全可行,也不太难。有关详细信息,请参见此答案:https://dev59.com/V2445IYBdhLWcg3wWI6L#4914538

0

我找到了一个解决方案,适用于那些无法或不想从流中读取元数据的人。这是我见过的最简单的解决方案。

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

布拉德在上面的帖子中说

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

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


说句实话,我曾经遇到过7.html无法作为UTF-8提供服务的问题,导致我在解析时出现了乱码字符。而played.html则没有这个问题。 - Brandon Roberson

0

当前播放的歌曲也会显示在页面/played.html上,但它需要与/7.html一起在Web浏览器中运行。但是当我在Windows机器上尝试使用Fiddler2时,出现了ICY 404资源未找到错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接