如何填充AMR播放的audiostreambasicdescription
-
30-09-2019 - |
题
源数据是AMR-NB 5.9Kbit/s(AMR_5.90)
我已经尝试了以下设置(以及十几个变体),但我只能获得垃圾音频。有人知道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;
根据Wikipedia的信息,AMR:
采样频率8 kHz/13位(20毫秒帧的160个样品)
生成95、103、118、134、148、159、204或244位的框架长度分别为4.75、5.15、5.90、6.70、7.40、7.40、7.95、10.2或12.2 kbit/s
以及此处的数据结构描述:
解决方案
iOS删除AMR支持,因此新解决方案是使用OpenCoreamr将数据转换为PCM
不隶属于 StackOverflow