Core Audio 中 , Audio File Service 三步走,

  • 本地文件,转音频解决 ID

通过 AudioFileOpenURL

  • 拿音频解决 ID , 获取信息的内存大小

AudioFileGetPropertyInfo

  • 那后面两个,获取信息

拿后面的音频解决 ID 和信息的内存大小 ,

获取信息

AudioFileGetProperty

int main (int argc, const char * argv[]) {        // 先看参数的个数    if (argc < 2) {        printf ("Usage: CAMetadata /full/path/to/audiofile     SSn");        return -1;    } // 1                // 再去取参数    NSString *audioFilePath = [[NSString stringWithUTF8String:argv[1]]                                    stringByExpandingTildeInPath];    // 2                    NSURL *audioURL = [NSURL fileURLWithPath:audioFilePath];    // 3    NSLog (@"audioURL: %@", audioURL);    AudioFileID audioFile;    // 4            OSStatus theErr = noErr;    // 5    theErr = AudioFileOpenURL((__bridge CFURLRef)audioURL, kAudioFileReadPermission, 0, &audioFile); // 6    assert (theErr == noErr);    // 7                UInt32 dictionarySize = 0;    // 8    theErr = AudioFileGetPropertyInfo (audioFile, kAudioFilePropertyInfoDictionary,                                       &dictionarySize, 0); // 9                    assert (theErr == noErr);    // 10    CFDictionaryRef dictionary;    // 11    theErr = AudioFileGetProperty (audioFile, kAudioFilePropertyInfoDictionary,                                   &dictionarySize, &dictionary); // 12    assert (theErr == noErr);    // 13    NSLog (@"nndictionary: %@", dictionary);    // 14                        CFRelease (dictionary);    // 15    theErr = AudioFileClose (audioFile);    // 16    assert (theErr == noErr);    // 17                    return 0;} 

argv 是一个字符串的数组

下面的 argv, 外面有两个参数。

  • argv[0]

执行的程序名字

  • argv[1]

本地的音频门路


命令行,增加参数

这样解决下


Core Audio 的属性查看:


封装格局 , File Format

kAudioFilePropertyFileFormat = 'ffmt',

编码格局, Data Format

kAudioFilePropertyDataFormat = 'dfmt',

Core Audio 无奈辨认格局:

fmt?

kAudioFileUnsupportedDataFormatError


Core Audio 办法的参数,特别强调输出、输入

参数名称中,

in, 是 input,

out, 是 output,

io, 是输出 + 输入, input + output