为啥我压缩wav后会有点击?
Posted
技术标签:
【中文标题】为啥我压缩wav后会有点击?【英文标题】:Why is there a click after I compress the wav?为什么我压缩wav后会有点击? 【发布时间】:2012-01-04 17:43:22 【问题描述】:我正在使用 freemp3droid 将 wav 文件转换为 mp3。文件开头有一个点击。当我大胆地查看文件时,最初的 100 字节(在标题之外)具有相同的模式。会发生什么?
这是点击的波形(99% 相同,每次都相同)
http://code.google.com/p/freemp3fordroid/source/browse/trunk/jni/frontend/main.c#215
【问题讨论】:
您是否在网站上打开了错误报告? 不知道你的意思:文件开头有点击 卡尔,应该保持沉默。但是每次压缩都有一个未记录的点击,它是由压缩过程中的一些逻辑错误生成的。 您是否尝试过使用不同的 MP3 编码器? 这不是关于使用不同的。它是关于修复这个的。 【参考方案1】:您的编码器是否尝试像压缩音频一样压缩 WAV/RIFF 44 字节标头?
【讨论】:
我都试过了,用 44 字节压缩,没有压缩,两者都有 pop。 仅供参考,编码器是开源的,问题中有源代码链接。【参考方案2】:值得了解点击是什么。如果您实际上压缩了标头,那么您会得到一个奇怪的不连续信号。您必须对信号有所了解才能了解正在发生的事情。您的波形不是以零值开始的。这意味着您必须立即从无电压变为一定电压。如果你有一个从零开始的正弦波,你会听到纯音。由于您从信号开始,这相当于开始时的高频吱吱声,您的扬声器会变成爆裂声。
如果你压缩一个不以零开头的信号,你会得到同样的pop。
阻止这种情况的方法是添加一个斜坡来启动您的声音。从零开始并线性上升,直到达到波形的起始值,您不会听到爆音。
【讨论】:
【参考方案3】:我在这里看不出真正的问题。因为,有损压缩通常使用连续函数来近似输入数据。在 MP3 案例中,使用了 Modified Cosine Discrete Transform,其中包括几个具有不同参数集的余弦函数(请查看 Fourier Series 以了解基本概念)。因此,您无法使用此类方法轻松表示高频,并且会在某些点导致高峰值或某些失真。
【讨论】:
【参考方案4】:有点晚了,但正确的答案是,freemp3droid 不是而且永远无法编码除原始 pcm 之外的任何其他格式。由于您的输入格式是 wav,freemp3droid 将 wav 标头解释为信号,从而产生巨大的初始点击。
http://code.google.com/p/freemp3fordroid 处的语句 “convertFile: the raw pcm or wav data to convert to MP3” 是完全错误的。
【讨论】:
以上是关于为啥我压缩wav后会有点击?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 或 C++ 中将压缩的 wav 文件转换为未压缩的 wav 文件的最简单方法是啥?