【问题标题】:calculate mp3 average volume计算 mp3 平均音量
【发布时间】:2009-06-16 19:10:14
【问题描述】:

我需要知道 mp3 文件的平均音量,这样当我将其转换为 mp3(以不同的比特率)时,我也可以缩放音量,使其正常化...

因此我需要一个命令行工具/ruby 库,它可以为我提供以 dB 为单位的平均音量。

【问题讨论】:

  • 您不需要平均音量而是峰值幅度来标准化声音文件。

标签: mp3 normalization scaling scale volume


【解决方案1】:

您可以同时使用 sox(一个开源命令行音频工具 http://sox.sourceforge.net/sox.html)对文件进行规范化和转码。

编辑

看起来它没有比特率选项。无论如何,如果 LAME 进行归一化, sox 可能是矫枉过正。

【讨论】:

    【解决方案2】:

    您可以使用LAME 编码为mp3。它具有标准化、缩放和比特率的选项。 LAME 还可以编译到几乎任何平台。

    【讨论】:

    • la脚进行缩放,但它是否正常化?我的意思是,它可以评估每首曲目的平均音量吗?如果是这样,怎么做?我读了这个人,但无法解决......
    【解决方案3】:

    我根据上面的输入写了一个小包装脚本:

    #!/bin/sh
    
    # Get the current volume (will reset to this later).
    current=`amixer -c 0 get Master 2>&1 |\
        awk '/%/ {
                  p=substr($4,2,length($4)-2);
                  if( substr(p,length(p)) == "%" )
                     {
                     p = substr(p,1,length(p)-1)
                     }
                 print p
                 }'`
    
    # Figure out how loud the track is.  The normal amplitude for a track is 0.1. 
    #   Ludicrously low values are 0.05, high is 0.37 (!!?)
    rm -f /tmp/$$.out
    /usr/bin/mplayer -vo null -ao pcm:file=/tmp/$$.out $1 >/dev/null 2>&1
    if [ $? = 0 ] ; then
        amplitude=`/usr/bin/sox /tmp/$$.out -n stat 2>&1 | awk '/RMS.+amplitude/ {print $NF}'`
    fi
    rm -f /tmp/$$.out
    
    # Set an appropriate volume for the track.
    to=`echo $current $amplitude | awk '{printf( "%.0f%%", $1 * 0.1/$2 );}'`
    echo $current $amplitude | awk '{print "Amplitude:", $2, "  Setting volume to:", 10/$2 "%,  mixer volume:", $1 * 0.1/$2}'
    amixer -c 0 set Master $to  >/dev/null 2>&1
    
    mplayer -quiet -cache 2500 $1
    
    # Reset the volume for next time.
    amixer -c 0 set Master "$current%"  >/dev/null 2>&1
    

    开始播放文件需要额外的一秒钟时间,并且依靠 alsamixer 来调整音量,但它确实很好地让您不必不断地调整主音量。而且它并不关心输入格式是什么,因为如果 mplayer 可以播放它,它可以提取音频,所以它应该可以与 MP3、Ogg、AVI 等兼容。

    【讨论】:

      【解决方案4】:

      http://mp3gain.sourceforge.net/ 是一个经过深思熟虑的解决方案。

      【讨论】:

      • 但是您没有解释如何以及为什么,而是发布了一个明天可能会死也可能不会死的链接?
      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 2018-08-17
      • 2014-05-16
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多