1.在使用AudioConverterNewSpecific() 创建转换器的时候输入流格式与输出流格式的声道数设置不同会出现-50
AudioStreamBasicDescription inputFormat = {0}; // 输入音频格式
inputFormat.mSampleRate = 44100.00;
inputFormat.mFormatID = kAudioFormatLinearPCM;
inputFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
inputFormat.mChannelsPerFrame = 1;
AudioStreamBasicDescription outputFormat = {0}; // 输出音频格式
outputFormat.mChannelsPerFrame = 1;
2.outBufferList.mBuffers[0].mDataByteSize 未设置
outBufferList.mBuffers[0].mData 未指定空间 会出现-50
//获取最大的size
UInt32 size = sizeof(UInt32);
UInt32 maxOutputSize;
AudioConverterGetProperty(_myConverter,
kAudioConverterPropertyMaximumOutputPacketSize,
&size,
&maxOutputSize);
// 设置缓冲区大小
outBufferList.mBuffers[0].mDataByteSize = maxOutputSize;
outBufferList.mBuffers[0].mData = aacData;
//如果你有其他方法或者解释请联系我,谢谢
//现在我碰到一个问题:转码后的bufferList中的outBufferList.mBuffers[0].mData为空,解决之后会再更新。
//更新:转码后的bufferList中的outBufferList.mBuffers[0].mData为空
才想到要更新,上次的问题关键在于,输入的音频长度上。应该在转码输入之前做一次缓冲,将传入数据控制在1024个样点即可解决问题。