在iOS中将GSM编码音频转换为线性PCM
在过去的几个月里,我一直在努力将GSM6.10转换为iOS中的线性PCM,但无法使其工作。 我将不胜感激任何建议!
我正在从Windows程序接收流式数据。 数据以具有几种不同数据包类型的数据包接收。 某些数据包类型包含显示数据。 一种数据包类型包含音频数据。 音频数据采用Microsoft WAV格式,每秒8000个样本,每个样本8位,单声道,使用GSM6.10进行压缩。 我无法控制Windows程序,所以我无法改变数据的流式传输方式。
我的iOS程序将流式数据解析为不同的数据包类型。 显示数据用于更新显示并正常工作。 我遇到的问题是音频数据。
当我的iOS程序连接到流时,没有规范的WAVE描述符。 我基本上是连接中游。
起初我试图使用音频文件流服务,将解析的音频数据包作为输入。 没有运气。 我工作和工作,无法解决典型? 问题。
然后我尝试了音频队列服务,并成功地让音频播放。 但是,使用音频队列服务的延迟使显示器和音频不同步(差不多4秒钟)。
我现在正在使用音频图表。 我曾尝试将转换器单元和远程IO单元一起使用。 我也尝试过使用远程IO单元。 在这两种情况下,似乎我都无法指定GSM6.10作为输入。 我使用的是我在工作的音频队列解决方案中使用的相同的AudioStreamBasicDescription。 但是,当我尝试初始化图形时,出现错误。
转换器单元和/或远程I / O单元是否将GSM6.10转换为线性PCM? 文档中不清楚这些单元是将压缩格式转换为线性PCM还是仅转换线性PCM格式(例如不同的采样率)。
有没有更好的方法将GSM6.10转换为线性PCM? 也许我可以在解析音频数据包时调用Core Audio转换器?
建议非常感谢!
链接地址: http://www.djcxy.com/p/67019.html