2

ユーザーがアプリケーションに追加した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

4

0 に答える 0