核心音频:零相当于仅用于PCM音频的静音?

abb*_*ood 8 objective-c core-audio audio-streaming ios packet-loss

我正在尝试创建一个基本算法,为核心音频进行数据包丢失隐藏.我只想用沉默替换丢失的数据..在学习核心音频的书中,作者说在无损PCM中,零意味着沉默.我想知道我是否正在播放VBR(即压缩数据),是否也会将零置于静音状态?

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

Bra*_*rad 3

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

当您使用有损编解码器进行压缩时,您会输入一种数字格式,在该格式中添加静音并不简单。考虑将数据添加到 ZIP 文件以将空字节添加到文件末尾。它并不像将它们任意插入 ZIP 文件那么简单。

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