AudioToolbox之AudioFile.h(一)

来源:互联网 发布:pcb设计软件中文版 编辑:程序博客网 时间:2024/04/30 17:46

AudioToolbox很强很暴力,要想把它研究清楚,那是相当的有难度,所以,我当前的目标是,基本弄清楚这些常用的api。最近,做自己的app时,遇到一堆音频相关的问题,发现必须得将AudioToolbox的API好好的学习一下了,那么,AudioFile.h这个文件开始吧:

1,AudioFile.h描述了苹果的 Audio File Services,使用这些服务(C 编程 API),我们可以读或者写多种格式的音频数据到内存或者硬盘。简单的说,就是关于音频文件读写的内容。

---create(创建)、初始化(initialize)、打开(open)、关闭(close)音频文件。

---读(Read)、写(Write)音频文件。

---优化(Optimize)音频文件。

---和用户自己的数据和全局信息一起工作(Work with user data and golobal information)。


2,

 OSStatus  AudioFileCreateWithURL ( CFURLRef   inFileRef, AudioFileTypeID  inFileType,
                                                             const AudioStreamBasicDescription *inFormat,
                                                             UInt32  inFlags,  AudioFileID *outAudioFile) 
创建文件,inFileRef是目地路径,inFileType是创建音频文件的格式,inFormat中这个文件的更多详细的信息,inFlags 表示是创建还是打开文件(如果值为kAudioFileFlags_EraseFiles的话,将会移除一个已经存在的文件,然后重新创建;如果没有设置的话,如果url出已经有文件,就会返回失败 ),默认是:kAudioFileFlags_EraseFiles。outAudioFile是这个音频文件的句柄,唯一标识这个音频文件或者音频流。
使用示例:

 AudioFileCreateWithURL((CFURLRef) fileURL,kAudioFileCAFType, &audioStreamDesc, kAudioFileFlags_EraseFile,&audioFile); 

3,AudioStreamBasicDescription 的设置,需要保存一个文件时设置,获取是使用其他接口。
      CAStreamBasicDescription dstFormat;
dstFormat.mSampleRate = myInfo.mDataFormat.mSampleRate;
dstFormat.mChannelsPerFrame = myInfo.mDataFormat.mChannelsPerFrame;
dstFormat.mFormatID = kAudioFormatLinearPCM;
dstFormat.mFormatFlags = kLinearPCMFormatFlagIsPacked | kLinearPCMFormatFlagIsSignedInteger; // little-endian
dstFormat.mBitsPerChannel = 16;
dstFormat.mBytesPerPacket = dstFormat.mBytesPerFrame = 2 * dstFormat.mChannelsPerFrame;
dstFormat.mFramesPerPacket = 1;



原创粉丝点击