나는 오디오 플레이어를 개발 중이다. 나는 mp3 파일의 다른 정보를 성공적으로 얻는다. mp3 파일의 앨범 아트를 가져올 수 없습니다. 이 코드를 사용하여 mp3 파일 정보를 얻습니다.MP3 파일의 앨범 아트를 얻는 방법
- (NSDictionary *)songID3Tags
{
AudioFileID fileID = nil;
OSStatus error = noErr;
error = AudioFileOpenURL((CFURLRef)self.filePath, kAudioFileReadPermission, 0, &fileID);
if (error != noErr) {
NSLog(@"AudioFileOpenURL failed");
}
UInt32 id3DataSize = 0;
char *rawID3Tag = NULL;
error = AudioFileGetPropertyInfo(fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL);
if (error != noErr)
NSLog(@"AudioFileGetPropertyInfo failed for ID3 tag");
rawID3Tag = (char *)malloc(id3DataSize);
if (rawID3Tag == NULL)
NSLog(@"could not allocate %lu bytes of memory for ID3 tag", id3DataSize);
error = AudioFileGetProperty(fileID, kAudioFilePropertyID3Tag, &id3DataSize, rawID3Tag);
if(error != noErr)
NSLog(@"AudioFileGetPropertyID3Tag failed");
UInt32 id3TagSize = 0;
UInt32 id3TagSizeLength = 0;
error = AudioFormatGetProperty(kAudioFormatProperty_ID3TagSize, id3DataSize, rawID3Tag, &id3TagSizeLength, &id3TagSize);
if (error != noErr) {
NSLog(@"AudioFormatGetProperty_ID3TagSize failed");
switch(error) {
case kAudioFormatUnspecifiedError:
NSLog(@"Error: audio format unspecified error");
break;
case kAudioFormatUnsupportedPropertyError:
NSLog(@"Error: audio format unsupported property error");
break;
case kAudioFormatBadPropertySizeError:
NSLog(@"Error: audio format bad property size error");
break;
case kAudioFormatBadSpecifierSizeError:
NSLog(@"Error: audio format bad specifier size error");
break;
case kAudioFormatUnsupportedDataFormatError:
NSLog(@"Error: audio format unsupported data format error");
break;
case kAudioFormatUnknownFormatError:
NSLog(@"Error: audio format unknown format error");
break;
default:
NSLog(@"Error: unknown audio format error");
break;
}
}
CFDictionaryRef piDict = nil;
UInt32 piDataSize = sizeof(piDict);
error = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict);
if (error != noErr)
NSLog(@"AudioFileGetProperty failed for property info dictionary");
free(rawID3Tag);
return (NSDictionary*)piDict;
}
나는 내가 MP3 파일의 앨범 아트를 얻을 수 kAudioFilePropertyAlbumArtwork을 통해 알고,하지만 난 그것을 얻을하는 방법을 모르겠어요.
오디오를 스트리밍하는 경우 artwork/thumbnail을 가져올 수 없습니다. 아마도이 링크가 도움이 될 것입니다. "http://stackoverflow.com/questions/9723449/mpmovieplayercontroller-getting-thumbnail-from-streaming-video" –
아니요 스트리밍 오디오 파일이 없습니다. 오디오 파일은 이미 앱에 다운로드됩니다. –
시험해보십시오 http://stackoverflow.com/questions/6607401/get-album-artwork-from-id3-tag-convert-function-from-java-to-objective-c – Yomo710