无法使用AudioFileCreateWithURL()创建音频文件

Unable to create audio file with AudioFileCreateWithURL()

本文关键字:创建 音频 文件 AudioFileCreateWithURL      更新时间:2023-10-16

我正试图在磁盘上创建一个新文件,并使用OSX上的Core Audio框架进行录制。我现在的主要障碍是,我似乎无法使用以下代码创建文件。我的目标是弄清楚为什么下面的代码不起作用,这样我就可以继续我项目的其余部分。您可以在下面看到此代码的输出。

string fp = "…path…to…file.../file.wav"  
CFURLRef audioFileURL = CFURLCreateFromFileSystemRepresentation(
        NULL,
        (const UInt8 *)fp.c_str(),  // filename
        fp.length(),             // number of bytes in filename
        false               // this is a file, not a directory
);
if(audioFileURL == NULL){
    cout << endl << "audioFileURL == NULL :(";
}
OSStatus retErr = AudioFileCreateWithURL (                                
                        audioFileURL,                                        
                        df.mFormatID,                          
                        &aqData.mDataFormat,                                 
                        kAudioFileFlags_EraseFile,                           
                        &aqData.mAudioFile                                   
                        );
cout << endl << "nAudioFileCreateWithURL error:" << retErr;

其输出以下内容:

AudioFileCreateWithURL error:1954115647

我不知道这个错误意味着什么。这里的任何帮助都是值得的。

Core Audio错误返回为数字或4个字母的代码。我猜你显示的奇怪数字是一个代码的内存位置。

你需要这样的东西来确定和转换:

    static char *FormatError(char *str, OSStatus error)
    {
        // see if it appears to be a 4-char-code
        *(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
        if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4])) {
            str[0] = str[5] = ''';
            str[6] = '';
        } else
        // no, format it as an integer
        sprintf(str, "%d", (int)error);
        return str;
    }