【问题标题】:AudioFileSetProperty returning 'kAudioFileUnsupportedPropertyError (pty?)'AudioFileSetProperty 返回 'kAudioFileUnsupportedPropertyError (pty?)'
【发布时间】:2012-01-29 07:29:36
【问题描述】:

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

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 标签/元数据。

【问题讨论】:

    标签: iphone ios audio id3


    【解决方案1】:

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

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

    而我得到的是:

    错误:Error Domain=NSOSStatusErrorDomain Code=1886681407“操作无法完成。(OSStatus 错误 1886681407。)”

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


    更新:

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

    【讨论】:

    • 我不知道。找不到任何有关 AudioFileSetProperty 限制的文档。其他 Core 音频方法在 iOS 上完美运行。
    • 我刚刚将idlib3移植到iOS,你可以用它来修改ID3标签。还包括一个示例项目。在这里查看github.com/rjyo/libid3-ios
    • 谢谢@Lele Xu,我去看看。
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多