无法找到wav文件中2个声音帧之间的差异

时间:2013-04-19 21:19:37

标签: java audio wav audio-streaming javasound

我想比较两个声音帧的相似程度,以便我可以区分它们。

我这样做是因为,通常当我们播放视频并播放广告时,通常会有声音下降或声音增加。

所以我想比较wav文件中的声音帧来找到差异。

以下代码查找每个视频帧的声波幅度

1个视频帧对应2000个声音帧。

代码---->

for (offset=waveFileHeaderOffset; ((offset < raf.length()) && (videoFrames < VideoFile.MAX_POSSIBLE_FRAMES)); offset+=2*AUDIO_PER_FRAME) 
{
          audioAmplitude = 0.0;    
          for (offset2=0; offset2 < 2*AUDIO_PER_FRAME; offset2+=2 )
           {
                double temp = 0.0;
                raf.seek(offset+offset2);
                raf.read(bytes);
                temp = (double) Math.abs((double)( ( ( bytes[1]  << 8 ) | ( bytes[0] & 0xff ) ) / 32768.0 ));
                audioAmplitude += temp;

            }
            audioAmplitude /= AUDIO_PER_FRAME;//we are taking average of all frames corresponding to video frame

            ArrayList<Double> tempFrameData = new ArrayList<Double>();
            (VideoFile.frameHashMap.get(videoFrames).clone());
            tempFrameData.add(audioAmplitude);


            VideoFile.frameHashMap.put(videoFrames, tempFrameData);

            videoFrames++;

     }

问题在于,由于幅度除以32768以使其标准化。我无法确定区分它们的门槛。

所有振幅都非常接近。我想我在计算振幅时犯了一些错误。

任何人都可以评论如何使用这些幅度比较两个帧,以便在视频之间出现广告时发现显着差异。

由于

1 个答案:

答案 0 :(得分:0)

http://en.wikipedia.org/wiki/Loudness_war
这篇文章主要是关于音乐,但它也适用于商业广告。 最有趣的部分是减少动态范围。

研究发现,人类听到的是“大声”信号,而不是“弱”信号 当你想卖东西时,这就派上用场了。