我有一个音频应用程序,有时需要将音频数据从PCM编码为AAC格式。我正在使用软件解码器(实际上我并不关心使用什么编码器,但我已经检查了两次,并且有软件解码器)。我正在使用(https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine库)
我将音频会话类别设置为kAudioSessionCategory_PlayAndRecord
拥有这些格式
// Output format
outputFormat.mFormatID = kAudioFormatMPEG4AAC;
outputFormat.mSampleRate = 44100;
outputFormat.mFormatFlags = kMPEG4Object_AAC_Scalable;
outputFormat.mChannelsPerFrame = 2;
outputFormat.mBitsPerChannel = 0;
outputFormat.mBytesPerFrame = 0;
outputFormat.mBytesPerPacket = 0;
outputFormat.mFramesPerPacket = 1024;
// Input format
audioDescription.mFormatID = kAudioFormatLinearPCM;
audioDescription.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsNonInterleaved;
audioDescription.mChannelsPerFrame = 2;
audioDescription.mBytesPerPacket = sizeof(SInt16);
audioDescription.mFramesPerPacket = 1;
audioDescription.mBytesPerFrame = sizeof(SInt16);
audioDescription.mBitsPerChannel = 8 * sizeof(SInt16);
audioDescription.mSampleRate = 44100.0;
所有与kAudioSessionProperty_OverrideCategoryMixWithOthers
== YES
但是当我使用kAudioSessionProperty_OverrideCategoryMixWithOthers
设置NO
时:
iOS Simulator - OK
iPod (6.1.3) - OK
iPhone 4S (7.0.3) - Fail with ('!sst' error on `AudioConverterFillComplexBuffer`) call
iPad 3(7.0.3) - Fail
正如我已经说过,所有工作正常,直到我将音频会话属性kAudioSessionProperty_OverrideCategoryMixWithOthers
更改为NO
所以问题是:
的错误是什么? (我没有在Headers和文档中找到任何线索这个错误意味着什么(在任何公共框架头文件中也没有'!sst'字符串))
如何解决??
如果您有任何其他想法,您认为我需要尝试 - 请随意发表评论。