如何更新 iOS 中的歌曲名称 shoutcast?
How to update Song name shoutcast in iOS?
我正在尝试为 Shoutcast 上的一个电台创建一个 iphone 应用程序。我正在使用 streamingkit(https://github.com/tumtumtum/StreamingKit) 来播放音乐,但我不确定如何获取当前歌曲和艺术家姓名。有没有人曾经这样做过或知道如何准确获取歌曲名称和艺术家?
您应该像这样为您的播放器注册一个 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
我正在尝试为 Shoutcast 上的一个电台创建一个 iphone 应用程序。我正在使用 streamingkit(https://github.com/tumtumtum/StreamingKit) 来播放音乐,但我不确定如何获取当前歌曲和艺术家姓名。有没有人曾经这样做过或知道如何准确获取歌曲名称和艺术家?
您应该像这样为您的播放器注册一个 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