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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。