AudioFileSetProperty 返回“kAudioFileUnsupportedPropertyError (pty?)”

发布于 2024-12-23 07:50:52 字数 835 浏览 1 评论 0原文

我在编写音频文件的元数据时遇到困难:

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);

第 6 行的 NSLog 为我提供了一本包含 ID3 信息的不错的字典。 但是当我想要更改(例如专辑名称,第 9 行)时,我得到 OSStatus 'pty?'回报。

任何人都可以给我指出我做错了什么。 或者甚至可能是编辑音频文件的 ID3 标签/元数据的更好/更简单/更快的方法。

I'm having difficulties writing a audio file's metadata:

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);

The NSLog on line #6 gives me a nice dictionary with ID3 information.
But when I want to alter (for instance the album name, line #9) I get an OSStatus 'pty?' in return.

Anyone who can give me pointers on what I'm doing wrong.
Or maybe even a better / simpler / quicker way to edit ID3 tags / metadata for audio files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不顾 2024-12-30 07:50:52

在这里做几乎同样的事情。您可以使用以下代码检查 OSStatus 错误。

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

我得到的是:

错误:错误域=NSOSStatusErrorDomain代码=1886681407“操作无法完成。(OSStatus错误1886681407。)”

难道iOS只是不允许您修改kAudioFilePropertyInfoDictionary?


更新:

我刚刚将 idlib3 移植到 iOS,您可以使用它来修改 ID3 标签。还包括一个示例项目。在这里查看https://github.com/rjyo/libid3-ios

Doing almost the same thing here. You can check the OSStatus error with the following code.

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

And what I got is:

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

Could it be that iOS just doesn't allow you to modify kAudioFilePropertyInfoDictionary?


Update:

I just ported idlib3 to iOS and you can use it to modify the ID3 tag. An example project is also included. Check it here https://github.com/rjyo/libid3-ios

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文