2012-11-15 39 views
1

我如何輕鬆地從iOS上的wav或m4a文件解析標題(objective-c)?從m4a或wav解析標題?

感謝您的解決方案。

+0

您是否試過正則表達式?同樣的問題,你有什麼嘗試? – brianLikeApple

+0

我只嘗試這種方式,但它只適用於mp3。 – flatronka

+0

CFDictionaryRef piDict = nil; UInt32 piDataSize = sizeof(piDict); err = AudioFileGetProperty(fileID,kAudioFilePropertyInfoDictionary,&piDataSize,&piDict); (err!= noErr){NSLog(@「AudioFileGetProperty for property info dictionary」); } NSDictionary * nsDict =(__bridge NSDictionary *)piDict; NSString * title = [nsDict objectForKey:[NSString stringWithUTF8String:kAFInfoDictionary_Title]]; – flatronka

回答

1
NSBundle* bundle = [NSBundle mainBundle]; 
NSString* path = [bundle bundlePath]; 
NSURL * fileURL=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/silence.mp3", path]]; 
AudioFileTypeID fileTypeHint = kAudioFileMP3Type; 
NSString *fileExtension = [[fileURL path] pathExtension]; 
if ([fileExtension isEqual:@"mp3"]||[fileExtension isEqual:@"m4a"]) 
{ 
    AudioFileID fileID = nil; 
    OSStatus err  = noErr; 

    NSDictionary *piDict = nil; 
    UInt32 piDataSize = sizeof(piDict); 
    err = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict); 
    if(err != noErr) { 
     [piDict release]; 
     NSLog(@"AudioFileGetProperty failed for property info dictionary"); 
    } 

    NSString * Album = [piDict objectForKey: 
         [NSString stringWithUTF8String: kAFInfoDictionary_Album]]; 
    NSString * Artist = [piDict objectForKey: 
         [NSString stringWithUTF8String: kAFInfoDictionary_Artist]]; 
    NSString * Title = [piDict objectForKey: 
         [NSString stringWithUTF8String: kAFInfoDictionary_Title]]; 
    NSLog(@"%@",Title); 
    NSLog(@"%@",Artist); 
    NSLog(@"%@",Album); 

}