AudioFileOpen无法以读/写权限打开

时间:2012-07-16 20:48:28

标签: objective-c macos audio core-audio audio-streaming

我正在尝试以编程方式优化由iTunes以外的软件创建的AAC文件(.m4a)或使用AudioFileOptimize()进行转换。

但是,当我尝试使用读/写权限执行AudioFileOpen时,它会给我一个错误。即使我手动将POSIX权限设置为0666(每个人都是r / w),我也只能打开读取权限。

我使用AudioFileOpenUrl描述的here方法,然后返回' prm?' (kAudioFilePermissionsError)。

以下是抛出错误的代码:

#import <Cocoa/Cocoa.h>
#import <CoreFoundation/CoreFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import "CAXException.h"



int main(int argc, const char * argv[])
{

    int result = 0;

    try {

    //optimize the output file:
    AudioFileID outfile;

    NSURL *outputFileURL = [NSURL fileURLWithPath:@"/DIR/PATH TO.m4a"];

    OSStatus err = AudioFileOpenURL((__bridge CFURLRef)outputFileURL, kAudioFileReadWritePermission, 0, &outfile);
    XThrowIfError(err, "AudioFileOpenURL");

    err = AudioFileOptimize(outfile); //Optimize the file
    XThrowIfError(err, "AudioFileOptimize");

    err = AudioFileClose(outfile);
    XThrowIfError(err, "AudioFileClose");

    } catch (CAXException e) {
        char str[32];
        printf ("CAXException thrown from CoreAudioConverter.mm. : %s, %s\n", e.FormatError(str), e.mOperation);
        result = 1;
    } catch (...) {
        result = 1;
    }

    return result;
}

输出:

CAXException thrown from CoreAudioConverter.mm. : 'prm?', AudioFileOpenURL

如果有人可以提供帮助,那就太棒了!

旁注,是否有人以编程方式将任何工作添加到aac文件中?

谢谢!

1 个答案:

答案 0 :(得分:2)

AudioFile Services不允许对某些文件进行写访问:

  

使用MPEG-4文件类型时存在一定的局限性,包括: .mp4(kAudioFileMPEG4Type),. m4a(kAudioFileM4AType),。3g2(kAudioFile3GP2Type)和.3gp(kAudioFile3GPType)。

     

AudioFile目前不支持写入这些类型的现有文件。

请参阅: http://developer.apple.com/library/mac/#qa/qa1676/_index.html