2014-03-13 109 views
2

我想從mp3或m4a文件中提取流派。元數據是存在的,正如在iTunes中可以看到的那樣,我已經成功地將我們的一些NSData對象用於流派,但無法將任何內容映射到特定流派。從音頻文件中提取流派元數據

此外,鍵不恰當地比較,所以我找到正確的鑰匙的方法是黑客真的。

我目前的代碼如下所示。

- (NSDictionary*) getMetaDictionary:(AVAsset*)asset 
{ 

    for (NSString *format in [asset availableMetadataFormats]) { 
     for (AVMetadataItem *item in [asset metadataForFormat:format]) { 

     if (item.key && [item.keySpace isEqualToString:@"itsk"]) { 


       NSUInteger akey = NSSwapInt([(NSNumber *)[item key] unsignedIntValue]); 
       NSString *keyString = [NSString stringWithFormat:@"%.4s",&akey]; 

       NSLog(@"key: %@ - value: %@", keyString, ([keyString isEqualToString:@"covr"][email protected]"nope":item.value)); 

       if ([keyString isEqualToString:@"©gen"]) 
       { 
        NSLog(@"Genre: %@", item.value); 
       } 

       if ([keyString isEqualToString:@"gnre"]) 
       { 
        NSData* genData = [[NSData alloc] initWithData:((NSData*)item.value)]; 

        NSString* genreString = [[NSString alloc] initWithData:genData encoding:NSASCIIStringEncoding]; 
        NSLog(@"Genre from data: %@", genreString); 
       } 

     } 
    } 
} 

這將生成以下的輸出:

key: ©nam - value: Smokebelch II (Beatless Mix) 
key: ©ART - value: The Sabres Of Paradise 
key: ©wrt - value: Jose Padilla 
key: ©alb - value: Café Del Mar - the Best of (Disc 1) 
key: gnre - value: <0063> 

我的理解是, 'gnre' 包含爲體裁的ID。你如何獲得該ID?我如何將其映射到實際的ID。

請提供任何幫助或建議嗎?

回答

0

的ID3標籤風格列表可以在這裏找到: http://id3.org/id3v2.3.0

看看附錄(第8條)。 我不確定蘋果是如何維護他們的標籤數據庫的,但我強烈地感覺它是基於我包含的鏈接進行更新的。