2011-12-28 29 views
5

Tôi đang gặp khó khăn bằng văn bản siêu dữ liệu một tập tin âm thanh của:AudioFileSetProperty trở về 'kAudioFileUnsupportedPropertyError (? Pty)'

AudioFileID fileID = nil; 
AudioFileOpenURL((__bridge CFURLRef) url, kAudioFileReadWritePermission, 0, &fileID); 
CFDictionaryRef piDict = nil; 
UInt32 piDataSize = sizeof(piDict); 
AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict); 
NSLog(@"%@", (__bridge NSDictionary *)piDict); 

NSMutableDictionary *dict = (__bridge NSMutableDictionary*)piDict; 
[dict setObject:@"NEW ALBUM NAME" forKey:@"album"]; 
piDict = (__bridge CFDictionaryRef)dict; 
piDataSize = sizeof(dict); 
OSStatus status = AudioFileSetProperty(fileID, kAudioFilePropertyInfoDictionary, piDataSize, &piDict); 

Các NSLog trên dòng # 6 mang lại cho tôi một cuốn từ điển tốt đẹp với thông tin ID3. Nhưng khi tôi muốn thay đổi (ví dụ: tên album, dòng # 9), tôi nhận được pty của OSStatus? đổi lại.

Bất cứ ai có thể cung cấp cho tôi gợi ý về những gì tôi đang làm sai. Hoặc thậm chí là cách tốt hơn/đơn giản/nhanh hơn để chỉnh sửa thẻ ID3/siêu dữ liệu cho tệp âm thanh.

Trả lời

4

Thực hiện hầu như những điều tương tự ở đây. Bạn có thể kiểm tra lỗi OSStatus bằng mã sau.

NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil]; 
NSLog(@"Error: %@", [error description]); 

Và những gì tôi nhận được là:

Error: Error Domain=NSOSStatusErrorDomain Code=1886681407 "The operation couldn’t be completed. (OSStatus error 1886681407.)"

Nó có thể được rằng iOS chỉ không cho phép bạn thay đổi kAudioFilePropertyInfoDictionary?


Cập nhật:

Tôi chỉ được chuyển idlib3 lên iOS và bạn có thể sử dụng nó để chỉnh sửa thẻ ID3. Một dự án ví dụ cũng được bao gồm. Kiểm tra tại đây https://github.com/rjyo/libid3-ios

+0

Tôi không biết. Không thể tìm thấy bất kỳ tài liệu nào về các hạn chế của AudioFileSetProperty. Các phương thức âm thanh cốt lõi khác hoạt động hoàn hảo trên iOS. – basvk

+2

Tôi vừa chuyển idlib3 sang iOS và bạn có thể sử dụng nó để sửa đổi thẻ ID3. Một dự án ví dụ cũng được bao gồm. Kiểm tra tại đây https://github.com/rjyo/libid3-ios – rjyo

+0

Cảm ơn @Lele Xu, tôi sẽ kiểm tra. – basvk

Các vấn đề liên quan