在iPhone上从流中获取ID3标签

时间:2012-07-31 13:36:44

标签: iphone ios streaming audio-streaming avplayer

我无法从HTTP Live Stream(使用m3u,m3u8播放列表文件)获取iPhone上的歌曲名称和作曲家名称。我试过从这个网站tempomix radio获取它。这是指向流媒体的链接 - http://stream21.group-network.net:9012

我正在尝试使用下一个代码:

        AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
    _player = [[AVPlayer playerWithPlayerItem:playerItem] retain];

    _player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
    [_player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:NULL];
    [_player addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:NULL];
    [_player addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:NULL];

然后在这里等待回电:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

当回调到来时 - 我检查AVPlayerStatus并运行play。 收音机播放得很好 - 但是从来没有观察过ValueVeyPath。

我知道这个问题与this question类似,但描述的方法对我不起作用。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

ID3标记与您链接的流无关。 SHOUTcast / Icecast不使用ID3标签。

您必须解析SHOUTcast元数据协议。我在这里回答了PHP的这个问题:https://stackoverflow.com/a/4914538/362536无论语言是什么,校长都是相同的。

另见http://www.smackfu.com/stuff/programming/shoutcast.html