c++ - 对音频信号进行编码是否有任何限制?

标签 c++ audio encoding codec opus

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

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

所以我有两个关于这一切的问题:

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

最佳答案

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

一个疯狂的猜测是,输入缓冲区有问题。如果样本被省略或重复,则经常会出现爆裂声,这通常是后续缓冲区边界不正确的结果。

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

关于c++ - 对音频信号进行编码是否有任何限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016585/

相关文章:

c++ - 分配的数组已归零

c++ - 我们可以在 C 中返回一个包含数组的结构吗?

android - 单击按钮时应用程序崩溃

java - 是否有Java库可以通过编程方式删除.mp3音频文件的一部分?

android - 使用android处理不同编码的文件

node.js - NodeJS 编码问题

c++ - 如何使用 streamsocket 作为 poco 库中的非阻塞 tcp 客户端?

c++ - 在Linux上使用命令行重定向(wiith <)将文件内容存储在字符串中?

audio - 使用 WebRTC 的 P2P 音频广播

c# - 将中文字符转换为 Unicode