好的,我使用MPMoviePlayerController从一个URL获得了一个Live。
Player = [[MPMoviePlayerController alloc]
initWithContentURL:[NSURL URLWithString:@"MY_URL_HERE_I_REMOVED"]];
Player.movieSourceType = MPMovieSourceTypeStreaming现在,流提供元数据(我相信每个人都这么称呼它)。例如:轨道名称等
我想要得到这个信息并在标签上显示出来。
我不知道如何得到它,我不能改变从MPMoviePlayerController和搜索了几个小时后,我发现了MPMoviePlayerController类的参考,但不知道如何使用来获取这些信息。
很好,如果您可以提到如何使用通知也触发每次这些数据变化。
发布于 2012-03-15 10:16:20
假设您已经知道从流中发送哪种元数据(如果不知道,请使用像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。以上将获得当前正在播放的歌曲的艺术家和轨道信息。
这是由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];然后使用调试控制台使用键、键空间、时间戳和值属性显示元数据的内容。
以上都只是一个例子。没有一种方法可以处理元数据。详细资料可参阅
作为MPTimedMetadata类的参考,从那里.密码启动!
https://stackoverflow.com/questions/8617067
复制相似问题