ユーザーがアプリケーションに追加したmp3ファイルからアルバムアートワークを取得しようとしています。これは私が使用しているコードです。
NSURL * fileURL=[NSURL fileURLWithPath:filePath];
NSString *fileExtension = [[fileURL path] pathExtension];
if ([fileExtension isEqual:@"mp3"]||[fileExtension isEqual:@"m4a"])
{
AudioFileID fileID = nil;
OSStatus err = noErr;
err = AudioFileOpenURL( (__bridge CFURLRef) fileURL, kAudioFileReadPermission, 0, &fileID );
if( err != noErr ) {
NSLog( @"AudioFileOpenURL failed" );
}
UInt32 id3DataSize = 0;
err = AudioFileGetPropertyInfo( fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL );
if( err != noErr ) {
NSLog( @"AudioFileGetPropertyInfo failed for ID3 tag" );
}
NSDictionary *piDict = nil;
UInt32 piDataSize = sizeof( piDict );
err = AudioFileGetProperty( fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict );
if( err != noErr ) {
NSLog( @"AudioFileGetProperty failed for property info dictionary" );
}
CFDataRef AlbumPic= nil;
UInt32 picDataSize = sizeof(picDataSize);
err =AudioFileGetProperty( fileID, kAudioFilePropertyAlbumArtwork, &picDataSize, &AlbumPic);
if( err != noErr ) {
NSLog( @"Get picture failed" );
}
NSData* imagedata= (__bridge NSData*)AlbumPic;
UIImage* image=[[UIImage alloc]initWithData:imagedata];
NSString * Album = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Album]];
NSString * Artist = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Artist]];
NSString * Title = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Title]];
NSLog(@"%@",Title);
NSLog(@"%@",Artist);
NSLog(@"%@",Album);
NSLog(@"Artwork Image%@",image);
次のコードは、タグmp3
を介してファイルから情報を取得します。すべてが返され、常にNullid3
であるアートワーク画像を受け入れます。私はこれを行う方法があることを知っていますが、それは決して機能しません。kAudioFilePropertyAlbumArtwork