我有以下代码,当在大多数(Shoutcast)流媒体服务器上使用时,返回艺术家/歌曲元数据,但在特定服务器上它不起作用,只是显示字母“' t' !
由于NSLog目前还没有为我工作(尽管有各种各样的改变,我无法让它工作(Xcode 9.2)),我还是在黑暗中。
- (void)FetchMeta
{
for (AVPlayerItemTrack *item in player.currentItem.tracks)
{
if ([item.assetTrack.mediaType isEqual:AVMediaTypeAudio])
{
NSArray *meta = [playerItem timedMetadata];
for (AVMetadataItem *metaItem in meta)
{
NSString *source = metaItem.stringValue;
if(![source isEqualToString:self.songInfo.text])
{
self.songInfo.text = [source stringByAppendingString:@" "];
//self.songInfo.text = @"Test";
[self LoadArtistImage];
}
NSLog(@"meta %@\n%@",source,metaItem.extraAttributes);
}
}
}
}
我知道我在代码的正确部分,因为如果我取消注释//self.songInfo.text = @"Test";
行,我会在显示器上看到它应该出现歌曲元数据,但是已经在3小时坚固,不能让它显示元数据,没有NSLog真的没有帮助。
更新:我已经能够查询服务器并且可以看到差异,但我仍然不知道如何告诉代码查看正确的字段...我的理解是数据被放入数组中(我认为)但这是错误的领域。也许它总是只占用最后一块?要明确的是,我正在寻找它来采取' StreamTitle'字段。
工作服务器响应:
Input #0, mp3, from 'http://server:port':
Metadata:
icy-notice1 : <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
icy-notice2 : SHOUTcast DNAS/posix(linux x86) v2.5.1.724<BR>
icy-name : Station Name
icy-genre : 80s, Pop
icy-br : 128
icy-sr : 44100
icy-url : http://website.com
icy-pub : 1
StreamTitle : Rod Stewart - Lost In You
非工作服务器响应:
Input #0, mp3, from 'http://server:port/':
Metadata:
icy-notice1 : <BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2 : SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-name : Station Name
icy-genre : Various
icy-url : www.website.com
icy-pub : 1
icy-br : 128
StreamTitle : Theory of a Deadman - Rx
StreamUrl : t
进一步澄清。 &#39;工作服务器&#39;输出正常显示&#39; StreamTitle&#39;字段使用显示的代码,非工作服务器显示最后一个字段&#39; StreamUrl&#39;这不是理想的领域。
任何指针?
非常感谢。