7
클라우드 스토리지가있는 ios 뮤직 플레이어에서 작업 중입니다.ios 개발에서 mp3 파일의 메타 데이터를 추출하는 방법
제목, 아티스트, 아트 워크와 같은 음악 정보를 추출해야합니다.
mp3 파일을 재생하고 일시 중지하는 playit이라는 작업이 있습니다. 또한 일부 UILables 및 UIImage를 mp3 파일과 관련된 메타 메타로 채워야합니다. 문제는 다른 25 개 이상의 mp3 파일에서 메타 데이터를 추출 할 수 없다는 것입니다. 여기에 내 코드는 다음과 같습니다.
URL은 정확합니다. 오디오 플레이어가 찾아서 재생할 수 있기 때문에 URL이 정확합니다. 그러나 avmetadataitem이 메타 데이터를 가져올 수없는 이유는 모르겠습니다.
- (IBAction)playIt:(id)sender {
AVAudioPlayer *audioPlayer;
AVAsset *assest;
NSString * applicationPath = [[NSBundle mainBundle] resourcePath];
NSString *secondParentPath = [applicationPath stringByDeletingLastPathComponent];
NSString *soundFilePath = [[secondParentPath stringByAppendingPathComponent:@"fisal1407"] stringByAppendingPathComponent:[musicFiles objectForKey:@"show_id"] ];
NSURL *fileURL = [NSURL URLWithString:[soundFilePath stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
assest = [AVURLAsset URLAssetWithURL:fileURL options:nil];
NSArray *metadata = [assest commonMetadata];
for (NSString *format in metadata) {
for (AVMetadataItem *item in [assest metadataForFormat:format]) {
if ([[item commonKey] isEqualToString:@"title"]) {
filename.text = (NSString *)[item value];
NSLog(@" title : %@", (NSString *)[item value]);
}
if ([[item commonKey] isEqualToString:@"artist"]) {
show_id.text = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"albumName"]) {
// _albumName = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
NSData *data = [(NSDictionary *)[item value] objectForKey:@"data"];
UIImage *img = [UIImage imageWithData:data] ;
imageView.image = img;
continue;
}
}
}
if (audioPlayer == nil) {
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
[sender setImage:[UIImage imageNamed:@"player_044.gif"] forState:UIControlStateNormal];
}
else
{
if (audioPlayer.isPlaying)
{
[sender setImage:[UIImage imageNamed:@"player_04.gif"] forState:UIControlStateNormal];
[audioPlayer pause];
} else {
[sender setImage:[UIImage imageNamed:@"player_044.gif"] forState:UIControlStateNormal];
[audioPlayer play];
}
}
}
통합 (아래 대답 알렉스의 제안이 수정 된)이 코드를 사용해보십시오 기능. 당신은 내가 사용하는 m4a 코드를 포함하고있는 질문에 대한 답을 찾을 수 있습니다 : http://stackoverflow.com/questions/14030746/ios-avfoundation-how-do-i-fetch-artwork-from-an-mp3- 파일/14046486 # 14046486 - 참여해 주셔서 감사합니다. –