Core Audio 中 Audio File Service 这样使用

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 中 Audio File Service 这样使用_第1张图片


Core Audio 的属性查看:


封装格式 , File Format

kAudioFilePropertyFileFormat = 'ffmt',

编码格式, Data Format

kAudioFilePropertyDataFormat = 'dfmt',

Core Audio 无法识别格式:

fmt?

kAudioFileUnsupportedDataFormatError


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

参数名称中,

in, 是 input,

out, 是 output,

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

你可能感兴趣的