如何填充AudioStreamBasicDescription为AMR播放
问题描述:
源数据是AMR-NB 5.9kbit/S(AMR_5.90)如何填充AudioStreamBasicDescription为AMR播放
我试过下面的设置(与36种),但我得到不外乎垃圾音频。有谁知道AMR的正确设置?
AudioStreamBasicDescription asbd;
asbd.mSampleRate = 8000.0;
asbd.mFormatID = kAudioFormatAMR;
asbd.mFormatFlags = 0;
asbd.mBytesPerPacket = 15; // (118>>3)
asbd.mFramesPerPacket = 1;
asbd.mBytesPerFrame = 15;
asbd.mChannelsPerFrame = 1;
asbd.mBitsPerChannel = 118; //tried also 0 and 13
asbd.mReserved = 0;
基于来自*信息为AMR:
采样频率8kHz的/ 13位(160个样本为20ms的帧)
生成的95帧的长度,103,118,134 ,148,159,用于比特率204,或244比特4.75,5.15,5.90,6.70,7.40,7.95,10.2或12.2千比特/秒,分别
并从这里所述数据结构描述:
答
的iOS下降AMR支持,所以新的解决方案是使用OpenCoreAMR您使用的解码和播放哪些API将数据转换成PCM
?如果您使用的是音频文件流,您是否无法使用AudioFileStreamGetProperty获取填充的ASBD? – warrenm 2010-05-19 20:17:50
我从记忆源使用试图回放: AudioQueueNewOutput AudioQueueAllocateBuffer AudioQueueEnqueueBuffer AudioQueuePrime AudioQueueStart – Peter 2010-05-20 06:10:16
我设法将数据写回一个文件,并重新获得财产提到阅读,mFramesPerPacket回来为2400这看起来似乎不太可能,但将该值(以及其他值的许多变体)反馈到ASBD结构中并没有帮助。 – Peter 2010-05-22 12:29:43