如何在javascript中播放超声波WAV / PCM文件而不会丢失数据

时间:2014-06-10 10:29:07

标签: javascript flash audio wav pcm

我需要在浏览器中循环一个音频文件(WAV,OGG或原始PCM),其中包含人耳闻所未闻(超声波)的片段(但包含对我有价值的数据)。

在Mac上使用Chrome,我注意到如果未听到的声音片段相对较短,我会收到所有数据(听到+闻所未闻)。相反,如果未听到的声音段长于某个阈值,它将快速淡出整个通道,并有效地完全取消文件的其余部分,直到下一个循环周期开始。

我加载和播放声音的方式如下:

var b = msg.data; // binary msg received from websocket
b.type = "audio/wav";
var URLObject = window.webkitURL || window.URL;
var url = URLObject.createObjectURL(b);
var snd = document.createElement("audio");
snd.setAttribute("src", url);
snd.addEventListener("loadeddata", function() {
    snd.loop = true;
    snd.muted = false;
    snd.play();
});

我正在寻找一种方法取消对未听到的声音的自动过滤。最终,我想要一种方法来做这个跨浏览器。如果不能使用JavaScript,也会接受Flash解决方案。

样品超声波WAV文件(每个约1MB): https://drive.google.com/file/d/0B5sMkxczD6sNbm04MmxMTmIwdlk/edit?usp=sharing

https://drive.google.com/file/d/0B5sMkxczD6sNal91WUhRNWo2d3c/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

遗憾的是,没有一种方法适用于所有浏览器。 对于桌面和iOS上的大多数浏览器,您也可以使用Web Audio API,如下所示:

http://www.html5rocks.com/en/tutorials/webaudio/intro/

对于IE / Android,您需要使用Flash播放WAV / PCM,或使用HTML5音频标签播放OGG,但后者可能会丢失超声波频率。

因此,一般来说,您需要编写代码来检查当前浏览器支持和使用的内容,从Web Audio API开始,然后尝试HTML5音频,然后尝试Flash。

相关问题