在前面的几篇文章中,我们分别介绍了 音频文件的创建、打开,现在我要学习的是,如何获取和设置音频文件的属性。
1,AudioFileGetProperty
功能:获取音频文件的属性。
函数原型:
参数解析:
inAudioFile:无需多言,文件操作句柄。(通常,用户是在调用:AuidioFileOpenURL之后获得的)
inPropertyID:用户想要获取的属性类别,比如:kAudioFilePropertyDataFormat(音频的数据格式),它的类型,决定了后面参数的解析方式。
ioDataSize:从这个参数的名称就知道它是,输入、输出都有效的。在输入时,她表示outPropertyData缓冲区的大小,即:sizeof(outPropertyData),而输出时,表示写入这个缓冲区的字节数。需要使用AudioFileGetPropertyInfo函数来获取该属性的值,这点需要注意。
outPropertyData:想要获取的对应于 inPropertyID属性所指定的结果的值。
调用实例:
UInt32 size = sizeof(myInfo.mDataFormat);
XThrowIfError(AudioFileGetProperty(myInfo.mAudioFile, kAudioFilePropertyDataFormat, &size, &myInfo.mDataFormat), "couldn't get file's data format");
2,AudioFileGetPropertyInfo
获取音频文件属性的信息,包括音频文件属性的大小以及这个属性只是否可写。
函数原型:
参数解析:
inAudioFile:想要获取属性值信息的文件id。
inPropertyID:想要获取的属性类型ID。
outDataSize:属性值的字节数。
isWritable:如果值为1,则属性值可写;如果值为1,则属性值只可读。
调用实例(判断audio file是否有 magic cookie):
size = sizeof(UInt32);
OSStatus result = AudioFileGetPropertyInfo (myInfo.mAudioFile, kAudioFilePropertyMagicCookieData, &size, NULL);
3,AudioFileSetProperty
函数功能:设置音频文件的属性。(在对音频文件进行改变的时候,通常会用到)
函数原型:
参数解析:
inAudioFile:想要被设置属性的文件id。
inPropertyID:想要设置的某个属性的ID。
inDataSize:正在传入的 inPropertyData的属性值的大小。
inPropertyData:新的属性值。
暂无使用实例提供。