我想将一些声音片段存储为 MP3 或 WAV 文件,但这些片段每个都是高度重复的(例如 10 秒的音调)。MP3 或 WAV 文件格式是否能够利用这一点 - 即是否存在相当于运行长度编码的声音文件?
问问题
248 次
1 回答
2
不,任何编解码器都无法做到这一点。
WAV 文件(通常)使用 PCM,它为每个样本保存一个值。即使存在完全的数字静音(所有值都相同),也会存储每个样本。
MP3 在 1,152 个样本的帧中工作。每个帧都是独立的(嗯,有比特库,但出于编码/解码的目的,这只是提供了额外的带宽)。即使有办法说做这个n
--times,它也会被固定在一个框架内。现在,如果您使用的是可变比特率的 MP3,我怀疑您将获得完美的正弦波效果,因为它们没有谐波。MP3 通过将时域转换为频域来工作。也就是说,它对每一帧中的频率进行采样。如果您只有其中一个频率(或根本没有声音),则 VBR 方法会很有效。
我应该注意到 FLAC在编码静音时确实使用了 RLE。但是,我认为 FLAC 不会被黑客入侵以使用 RLE 播放 10 秒的音频,因为再次存在帧边界。FLAC 的静音 RLE 对于在歌曲之间留下几秒钟间隙的现场互联网广播电台来说是有问题的。对于这些站点来说,拥有一个大缓冲区很重要,因为如果客户端没有收到足够的数据,它们通常会暂停流。(尽管一旦发送了静音块,一旦音频恢复,它们就会再次被捕获。)
于 2014-06-07T14:25:50.883 回答