8

我正在尝试创建一个基本算法来隐藏核心音频的丢包。我只是想用静音替换丢失的数据。在学习核心音频的书中,作者说在无损PCM中,零表示静音。我想知道我是否正在播放 VBR(即压缩数据),是否也可以将零用于静音?

在我现有的代码中......当我将零插入音频队列时......它突然卡住了(即它不再释放音频队列回调中消耗的数据......)我想知道为什么

4

1 回答 1

3

PCM 是原始编码样本。全 0(当对样本使用有符号数据时)确实是沉默。(事实上​​,任何值都是静音,但如果不过滤掉这种直流偏移,则有可能损坏您的放大器和/或扬声器。)

当您使用有损编解码器进行压缩时,您会输入一种数字格式,其中仅添加静音并非易事。考虑将数据添加到 ZIP 文件以将空字节添加到文件末尾。并不是随便把它们插入到 ZIP 文件中那么简单。

如果要向压缩文件添加静音,则必须使用适当的编解码器。然后,您必须将其放入比特流中,这也不是微不足道的。通常流被帧分解,但你甚至不能以某些格式分割这些帧。MP3 和 AAC 使用位存储库,其中先前帧中未使用的数据可用于稍后对更复杂的帧进行编码,从而使文件分割变得非常困难。

于 2012-11-26T15:01:15.733 回答