编码音频信号有什么限制吗?

时间:2015-12-01 09:12:38

标签: c++ audio encoding codec opus

我以某种采样率捕获pcm声音,例如24 kHz。我需要使用一些编解码器(我使用Opus)对其进行编码以通过网络发送。我注意到,在我使用Opus编码的一些采样率下,我经常听到接收端有一些额外的“破解”噪音。在其他速度,听起来不错。这可能是一个实现错误,但我可能还有一些我不知道的限制。

我还注意到,如果我在解码Opus编码的音频流时使用另一个采样率,我会得到更低或更高的音高,这对我来说似乎是合乎逻辑的。所以我读过,如果接收方不支持原始的PCM采样率,我需要在另一端进行重采样。

所以我对这一切有两个问题:

  1. 音频编码的采样率(或其他参数)是否有任何限制? (就像我有一个24kHz的pcm声音 - 可能有一定的采样率可用吗?)
  2. 在通过网络发送音频流时,是否有任何常用技术可以在两侧提供相同的音质?

2 个答案:

答案 0 :(得分:1)

噼里啪啦的声音很可能是一个错误,因为样本率没有任何限制会导致这种噪声(采样率转换会带来其他类型的信号变化,特别是当采样率降低到较低的采样率时;但绝对不会噼啪声。)

一个疯狂的猜测是输入缓冲区有问题。如果省略或复制样本,通常会发生噼啪声,通常后续缓冲区边界的结果不正确。

无论如何,都需要通过网络实时发送音频数据。所需的数据速率太高了。存在提供无损音频压缩(例如FLAC)的编解码器,但是它们的压缩比与例如相比较低。作品。

答案 1 :(得分:1)

问题是通过在接收端缓冲数据包并在达到一定数量后立即将它们写入声卡缓冲区来解决的。噼啪声'然后噪声很可能是由于发送到声卡缓冲区的后续帧之间的间隙