假设您已经知道从流中发送的元数据类型(如果不知道,请使用 VLC 之类的媒体播放器查看),您必须首先注册一个通知以按时间间隔获取元数据,然后处理它们的方法。
从通知开始,就
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(MetadataUpdate:)
name:MPMoviePlayerTimedMetadataUpdatedNotification
object:nil];
在 MPMoviePlayerController 分配之后。
然后在 MetadataUpdate 方法上
- (void)MetadataUpdate:(NSNotification*)notification
{
if ([streamAudioPlayer timedMetadata]!=nil && [[streamAudioPlayer timedMetadata] count] > 0) {
MPTimedMetadata *firstMeta = [[streamAudioPlayer timedMetadata] objectAtIndex:0];
metadataInfo = firstMeta.value;
}
}
其中 streamAudioplayer 是你的 MPMoviePlayerController 和 metadataInfo 一个 NSString 来存储值。以上将获取当前播放歌曲的 Artist 和 Track 信息。
这就是由shoutcast 或icecast 流发送的标准元数据的情况。
(不能代表别人,因为我没试过)
请注意,每个流可能会处理和发送不同的元数据。
由于 [streamAudioPlayer timedMetadata] 是一个 NSArray 你可以
NSArray *metaArray = [streamAudioPlayer timedMetadata];
NSLog (@"%i", [metaArray count]); //to see how many elements in the array
MPTimedMetadata *firstMeta = [[streamAudioPlayer timedMetadata] objectAtIndex:0];
然后使用调试控制台使用键、键空间、时间戳、值属性显示元数据的内容。
以上只是一个例子。没有一种方法可以处理元数据。
详细信息可以在
找到
https://developer.apple.com/library/ios/#DOCUMENTATION/MediaPlayer/Reference/MPTimedMetadata_Class/Reference/Reference.html
对于 MPTimedMetadata 类参考和从那里...代码!