2012-07-31 48 views
0

我无法从HTTP实时流(使用m3u,m3u8播放列表文件)获取iPhone上的歌曲名称和作曲家姓名。我试过从这个网站得到tempomix radio。这是链接流 - http://stream21.group-network.net:9012在iPhone上从流上获取ID3标签

我尝试使用下面的代码:

 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和运行游戏。 收音机播放良好 - 但从来没有来观察ValueForKeyPath。

我知道这个问题看起来类似this question,但描述的方法不适合我。

任何想法?谢谢。

回答

1

ID3标签与您链接的流无关。 SHOUTcast/Icecast不使用ID3标签。您将不得不解析SHOUTcast元数据协议。我在这里回答了PHP的这个问题:https://stackoverflow.com/a/4914538/362536无论使用何种语言,校长都是相同的。

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

+0

谢谢你的回答!对于这个流,我可以看到标题(在RAW数据中)。但这个链接http://fms.broadcast.quantumart.ru/hls-live/adaptive-dfm/_definst_/dfm/livestream.m3u8?此列表仅提供少量.st文件 - 但内部没有ICY标签... – 2012-07-31 18:50:10

+0

@Sergey,您刚刚链接的那些流是完全不同的,并且不由SHOUTcast/Icecast提供服务。如果有元数据,则需要将其从MPEG流中提取出来。 http://en.wikipedia.org/wiki/MPEG_transport_stream – Brad 2012-07-31 18:56:46