我想比较两个声音帧的相似程度,以便我可以区分它们。
我这样做是因为,通常当我们播放视频并播放广告时,通常会有声音下降或声音增加。
所以我想比较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以使其标准化。我无法确定区分它们的门槛。
所有振幅都非常接近。我想我在计算振幅时犯了一些错误。
任何人都可以评论如何使用这些幅度比较两个帧,以便在视频之间出现广告时发现显着差异。
由于
答案 0 :(得分:0)
http://en.wikipedia.org/wiki/Loudness_war
这篇文章主要是关于音乐,但它也适用于商业广告。
最有趣的部分是减少动态范围。
研究发现,人类听到的是“大声”信号,而不是“弱”信号 当你想卖东西时,这就派上用场了。