乐趣区

关于ios: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 的属性查看:


封装格局,File Format

kAudioFilePropertyFileFormat = ‘ffmt’,

编码格局,Data Format

kAudioFilePropertyDataFormat = ‘dfmt’,


Core Audio 无奈辨认格局:

fmt?

kAudioFileUnsupportedDataFormatError


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

参数名称中,

in, 是 input,

out, 是 output,

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

退出移动版