1

我可能问错了问题,但我在这方面的知识非常有限。

我正在使用acmStreamConvert将 PCM 转换为 GSM (6.10)。

音频格式:8khz,16 位,单声道

对于 PCM 缓冲区大小,我使用 640 字节(320 个样本)。对于 GSM 缓冲区,我使用 65 个字节。我的理解是 GSM“总是”将 320 个样本转换为 65 个字节。

我问“块或流”的原因是我想知道是否可以使用相同的 acmStreamConvert 句柄安全地转换多个音频流(实时)?ACM_STREAMCONVERTF_START我看到该函数有一些用于andACM_STREAMCONVERTF_END和的标志ACM_STREAMCONVERTF_BLOCKALIGN,但是我是否需要将此开始/结束序列用于 GSM?我知道某些使用头/尾的格式可能需要这样做,但我希望 GSM 格式不需要这样做?

我正在开发一个组VOIP客户端,每个客户端发送GSM格式,然后需要转换为PCM才能播放。我希望每个客户不需要一个 ACM 句柄。

4

1 回答 1

1

基于流,或者至少是它的 ACM API 用法。尝试对多个流使用相同的 ACM 对象/句柄会产生不希望的结果。我怀疑这也意味着它不能像其他编解码器那样处理丢失的数据包(尚未确认该部分)。

于 2012-06-11T15:41:05.780 回答