如何更新 iOS 中的歌曲名称 shoutcast?

How to update Song name shoutcast in iOS?

我正在尝试为 Shoutcast 上的一个电台创建一个 iphone 应用程序。我正在使用 streamingkit(https://github.com/tumtumtum/StreamingKit) 来播放音乐,但我不确定如何获取当前歌曲和艺术家姓名。有没有人曾经这样做过或知道如何准确获取歌曲名称和艺术家?

编辑:现在尝试https://github.com/AlvaroFranco/AFSoundManager

您应该像这样为您的播放器注册一个 KVO

[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:nil];

然后像这样使用它来更新UI:

- (void) observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
    if ([keyPath isEqualToString:@"timedMetadata"])
    {
        AVPlayerItem* playerItem = object;

        for (AVMetadataItem* metadata in playerItem.timedMetadata)
        {
            //Assign metadata to nsstring info
            NSString *info = [NSString stringWithFormat:@"%@", metadata.stringValue];
            MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"poster.png"]];

            NSMutableDictionary *nowPlayingInfo = [[NSMutableDictionary alloc] init];
            [nowPlayingInfo setObject:[NSString stringWithFormat:@"Now playing - %@", info] forKey:MPMediaItemPropertyArtist];
            [nowPlayingInfo setObject:info forKey:MPMediaItemPropertyTitle];
            [nowPlayingInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork];

            [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = nowPlayingInfo;

            NSLog(@"Now Playing: %@", info);

            NSArray *metadata = [info componentsSeparatedByString: @"- "];

            self.artist.text = [metadata objectAtIndex:0];
            self.song.text = [metadata objectAtIndex:1];

        }
    }
}

注意:playerItem 是 AVPlayerItem 的一个实例。

为什么不从 shoutcast 服务器获取当前歌曲和艺术家姓名?以下页面允许您检索:

Current song:     http://yourstream:port/currentsong?sid=#
Last 20 songs:    http://yourstream:port/played.html?sid#

可以在以下位置找到更多信息:Shoutcast Public pages