Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
我正在写一个音乐播放器,我想规范不同歌曲的音量。
我可以想到一些不同的方法来做到这一点,例如:
遍历所有PCM样本(假定浮点从-1到1),然后选择m = max(abs(sample))。然后将系数1 / m应用于所有PCM样本。这将使峰值为1。 遍历PCM流,并针对每个位置,在其周围采用一定宽度的汉宁窗口,计算绝对样本的平均值,然后从这些数据中选择最大值并标准化所有内容。 与2相同,但通过其他方式获得某种平均值。
2和3的缺点是我可能需要剪裁,从而失去一些质量。通过不将其标准化为1,而是将其标准化为0.95左右,我也许可以在某种程度上避免这种情况。但是我认为2和3的优势在于,这对于用户而言可能是更自然的标准化。 Wikipedia也对此有一些信息,并提到RMS,ReplayGain或EBU R128来衡量歌曲的响度。
其他流行音乐播放器(例如iTunes等)如何做到这一点? http://sox.sourceforge.net/ http://r128gain.sourceforge.net/ official ReplayGain homepage official ReplayGain 1.0 specification Wikipedia: ReplayGain
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
我正在写一个音乐播放器,我想规范不同歌曲的音量。
我可以想到一些不同的方法来做到这一点,例如:
2和3的缺点是我可能需要剪裁,从而失去一些质量。通过不将其标准化为1,而是将其标准化为0.95左右,我也许可以在某种程度上避免这种情况。但是我认为2和3的优势在于,这对于用户而言可能是更自然的标准化。 Wikipedia也对此有一些信息,并提到RMS,ReplayGain或EBU R128来衡量歌曲的响度。
其他流行音乐播放器(例如iTunes等)如何做到这一点?
最佳答案
iTunes使用声音检查技术。 “Sound Check是Apple Inc.专有的技术,其功能类似于ReplayGain。它在iTunes和iPod上都可用。” (来自Wikipedia)所以,这对我来说不是解决方案。
看来ReplayGain是最常见的技术。该算法解释为here。示例实现是mp3gain(GPL)或ffmpeg-replaygain(GPL,从mp3gain派生)。我有own implementation now in my MusicPlayer project(BSD许可证)。
另请参见这些项目及其实现:
08-18 18:29