.aifaudio文件转换的kAudioFormat?

我想从AAC格式转换/保存audio文件为AIFFaudio格式。 默认我想用LineraPCM。 。 但audio格式保存为AAC格式。 。 我想以AIFF格式保存audio文件。这是我的代码

NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, [NSNumber numberWithFloat:44100.0], AVSampleRateKey, [NSNumber numberWithInt:2], AVNumberOfChannelsKey, [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey, [NSNumber numberWithInt:16], AVLinearPCMBitDepthKey, [NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey, [NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey, nil]; 

任何人都可以请kAudioFormat或audio设置的build议来使用AVAssetWriterInput写入文件保存在AIFFaudio格式?

到目前为止,我还没有和AVAssetWriter一起工作过,但是我认为它基本上是一种格式描述,就像在使用ASBD的核心audio中一样。

为AIFF定义的AudioBasicStreamDescription的例子在这里例子看:

 aiffFormat.mSampleRate = sampleRate; aiffFormat.mFormatID = kAudioFormatLinearPCM; aiffFormat.mBytesPerPacket = 2; aiffFormat.mFramesPerPacket = 1; aiffFormat.mBytesPerFrame = 2; aiffFormat.mChannelsPerFrame = 2; // for STEREO aiffFormat.mBitsPerChannel = 16; aiffFormat.mFormatFlags = (kLinearPCMFormatFlagIsBigEndian | kAudioFormatFlagIsPacked | kLinearPCMFormatFlagIsSignedInteger) ; aiffFormat.mBitsPerChannel = sizeof(float) * 8; aiffFormat.mBytesPerFrame = aiffFormat.mChannelsPerFrame * sizeof(Float32); aiffFormat.mBytesPerPacket = aiffFormat.mFramesPerPacket * aiffFormat.mBytesPerFrame; 

在上面的代码中,大的字节必须被设置为YES。 如上所述,我从来没有使用AVAssetWriter,所以我不知道哪些进一步的参数必须设置或哪些不是,但与上面的示例stream描述,它应该不是很难得到运行。