Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “接收”;解码音频数据错误null“;含铬_Javascript_Html_Google Chrome_Audio_Web - Fatal编程技术网

Javascript “接收”;解码音频数据错误null“;含铬

Javascript “接收”;解码音频数据错误null“;含铬,javascript,html,google-chrome,audio,web,Javascript,Html,Google Chrome,Audio,Web,你好,网络音频开发者 我收到Chrome中的“decodeAudioData错误null” 和 Firebug中的“解码音频数据错误未定义” 萤火虫也说 “传递给decodeAudioData的缓冲区包含未知的内容类型。” 这个代码有什么问题吗 是否还有其他需要解决的问题 “网络音频API” 一起2 window.onload=init; var语境; var缓冲加载程序; 函数init(){ window.AudioContext=window.AudioContext | | window

你好,网络音频开发者

我收到Chrome中的“decodeAudioData错误null” 和 Firebug中的“解码音频数据错误未定义”

萤火虫也说 “传递给decodeAudioData的缓冲区包含未知的内容类型。”

这个代码有什么问题吗 是否还有其他需要解决的问题 “网络音频API”


一起2
window.onload=init;
var语境;
var缓冲加载程序;
函数init(){
window.AudioContext=window.AudioContext | | window.webkitadiocontext;
上下文=新的AudioContext();
bufferLoader=新的bufferLoader(上下文,
['../web audio/path/chrono.mp3'],
完成装载
);
load();
}
函数完成加载(bufferList){
var source1=context.createBufferSource();
source1.buffer=bufferList[0];
source1.connect(context.destination);
source1.start(0);
}
函数缓冲加载程序(上下文、URL列表、回调){
this.context=上下文;
this.urlist=urlist;
this.onload=回调;
this.bufferList=新数组();
此参数为0.loadCount;
}
BufferLoader.prototype.loadBuffer=函数(url,索引){//异步加载缓冲区
var request=new XMLHttpRequest();
打开(“获取”,url,true);
request.responseType=“arraybuffer”;
var loader=this;
request.onload=函数(){
//异步解码request.response中的音频文件数据
loader.context.decodeAudioData(
请求.答复,
功能(缓冲区){
如果(!缓冲区){
警报('解码文件数据时出错:'+url);
回来
}
loader.bufferList[索引]=缓冲区;
if(++loader.loadCount==loader.urlist.length)
loader.onload(loader.bufferList);
},
函数(错误){
console.error('解码音频数据错误',error);
}
);
}
request.onerror=函数(){
警报('BufferLoader:XHR错误');
}
request.send();
}
BufferLoader.prototype.load=函数(){
对于(var i=0;i
我也遇到了同样的问题,这取决于wav文件本身使用的编解码器类型。仅支持PCM,而引发me错误的文件是MS-ADPCM。您可以使用QuickTime或VLC获取编解码器信息,并在必要时将其转换为PCM

我想你的MP3也有类似的问题

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="utf-8">
    <title>Together 2 </title>
</head>
<body>
<script type="text/javascript">
  window.onload = init;
  var context;
  var bufferLoader;
  function init() {
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    context = new AudioContext();
    bufferLoader = new BufferLoader(context,
      [ '../web-audio/path/chrono.mp3' ],
      finishedLoading
    );
    bufferLoader.load();
}

function finishedLoading(bufferList) {
  var source1 = context.createBufferSource();
  source1.buffer = bufferList[0];
  source1.connect(context.destination);
  source1.start(0);
}

function BufferLoader(context, urlList, callback) {
  this.context = context;
  this.urlList = urlList;
  this.onload = callback;
  this.bufferList = new Array();
  this.loadCount = 0;
}
BufferLoader.prototype.loadBuffer = function(url, index) { // Load buffer asynchronously
  var request = new XMLHttpRequest();
  request.open("GET", url, true);
  request.responseType = "arraybuffer";
  var loader = this;
  request.onload = function() {
    // Asynchronously decode the audio file data in request.response
    loader.context.decodeAudioData(
      request.response,
      function(buffer) {
        if (!buffer) {
          alert('error decoding file data: ' + url);
          return;
        }
        loader.bufferList[index] = buffer;
        if (++loader.loadCount == loader.urlList.length)
          loader.onload(loader.bufferList);
      },
      function(error) {
        console.error('decodeAudioData error', error);
      }
    );
  }
  request.onerror = function() {
    alert('BufferLoader: XHR error');
  }
  request.send();
}

BufferLoader.prototype.load = function() {
    for (var i = 0; i < this.urlList.length; ++i)
      this.loadBuffer(this.urlList[i], i);
    }
</script>
</body>
</html>