ios - 错误代码1886681407 AudioFileGetProperty给什么?

标签 ios audio error-handling

我想以mp3文件获取专辑图片,这是我的代码的一部分

    //the Chinese is music name 
    NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"安和桥" ofType:@"mp3"]];
    AudioFileTypeID fileTypeHint = kAudioFileMP3Type;

    AudioFileID fileID = nil;
    OSStatus err = noErr;

    err = AudioFileOpenURL((__bridge CFURLRef)fileURL, kAudioFileReadPermission, 0, &fileID);

    UInt32 id3DataSize = 0;
    err = AudioFileGetPropertyInfo(fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL);
    NSDictionary *piDict = nil;
    UInt32 piDataSize = sizeof(piDict);
    err = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict);
    CFDataRef AlbumPic = nil;
    UInt32 picDataSize = sizeof(picDataSize);
    err = AudioFileGetProperty(fileID, kAudioFilePropertyAlbumArtwork, &picDataSize, &AlbumPic);
    NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:err userInfo:nil];
    NSLog(@"Error: %@", [error description]);
    NSData *imgdata = (__bridge NSData *)AlbumPic

我可以正确获取相册名称,但是图像数据为零,并且我会打印错误信息
2014-09-09 20:07:05.129 Music_Player[2792:60b] Error: Error Domain=NSOSStatusErrorDomain Code=1886681407 "The operation couldn’t be completed. (OSStatus error 1886681407.)"

在另一个问题中,有人说这可能是许可问题,但这是固定属性(property),但是,我正在获得属性(property),所以我认为那不是那个原因。但是我真的不知道为什么吗?
AudioFileSetProperty returning 'kAudioFileUnsupportedPropertyError (pty?)'

最佳答案

有时您无法使用AudioFile从音频文件中获取所有信息。请改用AVURLAsset。

- (void)getAlbumArtworkInfo
{
   NSURL *fileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"abc" ofType:@"mp3"]];
   AVURLAsset *avURLAsset = [AVURLAsset URLAssetWithURL:fileUrl options:nil];
   for (NSString *format in [avURLAsset availableMetadataFormats]) {
      for (AVMetadataItem *metadataItem in [avURLAsset metadataForFormat:format]) {
          if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
              UIImage *artImageInMp3 = [UIImage imageWithData:[(NSDictionary*)metadataItem.value objectForKey:@"data"]];
              NSLog(@"artImageInMp3 %@",artImageInMp3);
              break;
          }
      }
   }
}

关于ios - 错误代码1886681407 AudioFileGetProperty给什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25744508/

相关文章:

ios - iOS推送通知是否可以选择只在通知中心显示?

iphone - 如何从推送通知中获取文本字符串?

ios - Swift 默认参数和选择器语法

audio - 如何在google colab中显示多个音频文件?

android - Android AudioRecord原始日期为.wav或其他格式

javascript - 如何在 iOS 中播放 MPEG-DASH 视频流?

audio - 简单的录音功能,录音 5 秒后保存。

sql-server - SSAS中的错误日志记录

javascript - 错误事件监听器不处理加载资源错误

ruby-on-rails - Rspec、Rails 的 Shoulda 输出有错误但不输出错误本身