从audiostream获取元数据

我想从AVQueuePlayer播放的AVPlayerItem中的stream式传输URL获取文件名称(如果可能的话),但我不知道如何去做这件事。

此外,如果事实certificate,我的stream媒体url没有任何元数据,我可以把元数据放在我的NSURL*之前传递给AVPlayerItem?

谢谢。

我很惊讶没有人回答这个问题。 其实没有人回答我的其他问题。 让我想知道这里的人真正有多less知识。

无论如何,我会继续回答我自己的问题。 我发现如何通过执行以下操作获取元数据:

 AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; NSArray *metadataList = [playerItem.asset commonMetadata]; for (AVMetadataItem *metaItem in metadataList) { NSLog(@"%@",[metaItem commonKey]); } 

这给了我一个清单如下:

 title creationDate artwork albumName artist 

现在,我知道如何从我的audiostream访问元数据。 只需简单地通过NSArray ,找一个具有我想要的commonKey (例如title )的commonKey 。 然后,当我findAVMetadataItem只是从它的value属性。

现在,这个工作很好,但是当您尝试获取数据时,可能需要一段时间。 您可以通过发送loadValuesAsynchronouslyForKeys:completionHandler:asynchronous加载数据到刚刚find的AVMetadataItem

希望对那些可能会遇到同样问题的人有所帮助。

当检索一个特定的项目时,我会使用在AVMetadataFormat.h中声明的元数据公共密钥常量,即: AVMetadataCommonKeyTitle

 NSUInteger titleIndex = [avItem.asset.commonMetadata indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { AVMutableMetadataItem *metaItem = (AVMutableMetadataItem *)obj; if ([metaItem.commonKey isEqualToString:AVMetadataCommonKeyTitle]) { return YES; } return NO; }]; AVMutableMetadataItem *item = [avItem.asset.commonMetadata objectAtIndex:titleIndex]; NSString *title = (NSString *)item.value;