好的,所以我使用MPMoviePlayerController从URL获得了直播.
Player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"MY_URL_HERE_I_REMOVED"]]; Player.movieSourceType = MPMovieSourceTypestreaming
现在,该流提供了Meta Data(我相信大家都称之为).例如.轨道名称等
我不知道如何获得它,我无法从MPMoviePlayerController更改并在搜索几个小时后发现MPTimedMetadata类引用但不知道如何使用来获取此信息.
解决方法
假设您已经知道从流中发送了哪种元数据(如果不这样,请使用VLC等媒体播放器查看),您必须首先注册通知以按时间间隔获取元数据,然后再使用方法处理它们.
从通知开始,只是
[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(MetadataUpdate:) name:MPMoviePlayerTimedMetadataUpdatednotification object:nil];
在MPMoviePlayerController分配之后.
- (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];
然后使用调试控制台使用键,键空间,时间戳,值属性显示元数据的内容.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。