适用于Microsoft商店的Javascript Windows 10 UWP应用中的解码音频数据失败

时间:2019-03-09 18:49:56

标签: javascript uwp

欢迎此难题的任何帮助。我正在尝试使用Visual Studio在Microsoft商店的Windows 10应用程序中使用此代码。

我正在使用sound.js from Github

它可以在Microsoft Edge,Chrome和Firefox中正常播放声音(尽管由于某种原因它不能在Internet Explorer中播放任何声音)。在其他方面,在我的测试中,UWP的行为与Edge完全相同。

UWP失败并显示错误

message "EncodingError" String
name    "EncodingError" String

我尝试了wav和mp3样本,但均因相同的错误而失败。

音频文件已添加到该项目的资产列表中,所以这不是问题。

UWP还可以使用AudioContext播放声音,因此生成音频完全没有问题-它可以在受到攻击时产生正弦波,三角波,锯齿波和方波。但是由于某些原因无法加载这些样本。

这是我正在使用的代码,它在onFailed函数中引发了此编码错误。

//The `loadSound` function loads the sound file using XHR
function loadSound(o, source, loadHandler, failHandler) {
  var xhr = new XMLHttpRequest();

  //Use xhr to load the sound file.
  xhr.open("GET", source, true);
  xhr.responseType = "arraybuffer";

  //When the sound has finished loading, decode it using the
  //`decodeAudio` function (which you'll see ahead)
  xhr.addEventListener("load", decodeAudio.bind(this, o, xhr, loadHandler, failHandler)); 

  //Send the request to load the file.
  xhr.send();
}

//The `decodeAudio` function decodes the audio file for you and 
//launches the `loadHandler` when it's done
function decodeAudio(o, xhr, loadHandler, failHandler) {

  //Decode the sound and store a reference to the buffer.
  actx.decodeAudioData(
    xhr.response,
    function(buffer) {
      o.buffer = buffer;
      o.hasLoaded = true;

      //This next bit is optional, but important.
      //If you have a load manager in your game, call it here so that
      //the sound is registered as having loaded.
      if (loadHandler) {
        loadHandler();
      }
    },
    function(error) {
      if (failHandler) failHandler(o.source, error);
    }
  );
}
// ...

  //The callback function to run if an asset fails to load or decode
    onFailed: function (source, error) {
      if(do_throw_error)
      throw new Error("Audio could not be loaded: " + source);
  },

这是online metronome that I'm trying to turn into a Windows 19 Microsoft store app-如果您在MIcrosoft Edge中使用它,则将触发与Windows 10应用商店相同的代码,并且可以正常工作(我在使混响在Edge中工作时遇到了问题,但这是另一个问题)问题,对于节拍器来说不是一个大问题,尽管这会很好,但无论如何这是一个单独的问题:))。

谢谢!

0 个答案:

没有答案