0

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

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

所以我想比较 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 以对其进行归一化。我无法确定区分它们的阈值。

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

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

谢谢

4

1 回答 1

0

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

研究发现,人类听觉更喜欢“响亮​​”的信号而不是“微弱”的信号。
当你想卖东西时,它会派上用场。

于 2013-04-20T18:29:29.620 回答