AudioToolbox之AudioFile.h(四)Getting and Setting Audio File Properties

在前面的几篇文章中,我们分别介绍了 音频文件的创建、打开,现在我要学习的是,如何获取和设置音频文件的属性。

1,AudioFileGetProperty

功能:获取音频文件的属性。

函数原型:

OSStatus AudioFileGetProperty (
    AudioFileID         inAudioFile,
    AudioFilePropertyID inPropertyID,
    UInt32              *ioDataSize,
   void                *outPropertyData
);

 

参数解析:

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

  获取音频文件属性的信息,包括音频文件属性的大小以及这个属性只是否可写。

函数原型:

OSStatus AudioFileGetPropertyInfo (
   AudioFileID         inAudioFile,
   AudioFilePropertyID inPropertyID,
   UInt32              *outDataSize,
   UInt32              *isWritable
);

参数解析:

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

函数功能:设置音频文件的属性。(在对音频文件进行改变的时候,通常会用到)

函数原型:

OSStatus AudioFileSetProperty (
   AudioFileID         inAudioFile,
   AudioFilePropertyID inPropertyID,
   UInt32              inDataSize,
   const void          *inPropertyData
);

参数解析:

inAudioFile:想要被设置属性的文件id。

inPropertyID:想要设置的某个属性的ID。

inDataSize:正在传入的 inPropertyData的属性值的大小。

inPropertyData:新的属性值。

暂无使用实例提供。

 

你可能感兴趣的:(AudioToolbox之AudioFile.h(四)Getting and Setting Audio File Properties)