2016-03-25 40 views
0

我想从AVAUDIOPLAYER的音频流中检索元数据(歌曲,艺术家)。我试着用这个代码,但我没有从多个URL获得任何数据。使用AVAUDIOPLAYER从音频流获取元数据

NSURL *url = [NSURL URLWithString:urlString]; 
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; 
NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init]; 

for (NSString *format in [asset availableMetadataFormats]) 

有人帮我吗?也许我做错了? AVAUDIOPLAYER可以做到这一点?

由于

+0

任何意见????? – Seb78

+0

我会使用'AVPlayer'而不是'AVAudioPlayer',然后您可以创建一个'AVPlayerItem'并将其与'AVPlayer'的一个实例相关联。该项目的元数据可以通过使用其属性(如“轨道”和“持续时间”)来检索。 [这里是文档](https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayerItem_Class/index.html)。如果你想要'AVPlayerItem'不提供的附加元数据,那么你可以先创建一个'AVAsset',并从该对象中检索附加数据。然后您可以从AVAsset中创建一个AVPlayerItem' – MikeG

+0

感谢您的建议。任何解决方案与Avaudioplayer?也许它不可能获得元数据.. ???? – Seb78

回答

0

下面是如何创建AVAsset并用它来创建,然后可以用AVPlayer实例相关联的AVPlayerItem一个例子。元数据可以通过使用AVAsset属性检索...

var player = AVPlayer()  
func createAssetAndItem(){ 

    //create AVAsset from an NSURL. metadata can be retrieved from the asset depending on what is available 
let createdAVAsset = AVURLAsset(URL: songNSURL) 

    //create an AVPlayerItem from the AVAsset 
let createdAVItem = AVPlayerItem(asset: createdAVAsset) 

    //asscoaite AVPlayerItem with instance of AVPlayer 
player = AVPlayer(AVPlayerItem: createdAVItem) 


} 
+0

没有工作:(我现在绝望,我没有找到任何解决方案 – Seb78

+0

你现在在使用'AVPlayer'吗?我们需要看你的代码与你的尝试有关,但你应该可以打开一个新的问题这也是你从哪里得到的音频文件?也许元数据不是推定的 – MikeG

+0

我回答,抱歉,我花了时间。 – Seb78