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