Web音频API:decodeAudioData不';用Chrome解码作品

Web音频API:decodeAudioData不';用Chrome解码作品,audio,web,decode,opus,Audio,Web,Decode,Opus,我目前正在尝试使Opus数据包与Web音频API一起工作。然而问题是,虽然FireFox和Chrome本机支持它,但只有FireFox可以使用Web Audio API中的decodeAudioData对OPUS样本流进行解码。当我将opus文件拖到浏览器中时,Chrome会识别该文件,而且它也会播放该文件!所以我想知道我可能是做错了什么导致了Chrome的失败 然后,我使用了一些示例代码,只需加载一个opus文件并尝试对其进行解码。同样,Firefox会,Chrome不会。所以我想知道是否有人

我目前正在尝试使Opus数据包与Web音频API一起工作。然而问题是,虽然FireFox和Chrome本机支持它,但只有FireFox可以使用Web Audio API中的decodeAudioData对OPUS样本流进行解码。当我将opus文件拖到浏览器中时,Chrome会识别该文件,而且它也会播放该文件!所以我想知道我可能是做错了什么导致了Chrome的失败

然后,我使用了一些示例代码,只需加载一个opus文件并尝试对其进行解码。同样,Firefox会,Chrome不会。所以我想知道是否有人能证实我的发现或者告诉我我做错了什么。以下是先前链接的修改版本。谢谢

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title> decodeAudioData sample </title>
</head>

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
//$(document).ready(function() {
    var catMeowingBuffer = null;
    window.AudioContext = window.AudioContext||window.webkitAudioContext;
    var context = new AudioContext();

    function onError(err) {
       console.log("unable to decode");
    }

    function loadCatSound(url) {
      var request = new XMLHttpRequest();
      request.open('GET', url, true);
      request.responseType = 'arraybuffer';

      // Decode asynchronously
      request.onload = function() {
          context.decodeAudioData(request.response, function(buffer) {
          catMeowingBuffer = buffer;
           var src = context.createBufferSource();
           src.buffer = catMeowingBuffer
           src.connect(context.destination);
           src.start(0);
        }, onError);
      }
      request.send();
    }

    loadCatSound("opus.opus");

    function playCatSound() {
        if (catMeowingBuffer !== null) {
           var src = context.createBufferSource();
           src.buffer = catMeowingBuffer
           src.connect(context.destination);
           src.start(0);
        }
    }
//});
</script>

<body>
<h1> decodeAudioData sample </h1>


<button onclick="playCatSound();"> playCatSound </button>

<hr>
<address></address>
</body> </html>

解码音频数据样本
//$(文档).ready(函数(){
var catMeowingBuffer=null;
window.AudioContext=window.AudioContext | | window.webkitadiocontext;
var context=新的AudioContext();
函数ONERR(错误){
console.log(“无法解码”);
}
函数loadCatSound(url){
var request=new XMLHttpRequest();
打开('GET',url,true);
request.responseType='arraybuffer';
//异步解码
request.onload=函数(){
上下文.解码音频数据(请求.响应,函数(缓冲区){
catMeowingBuffer=缓冲区;
var src=context.createBufferSource();
src.buffer=catMeowingBuffer
connect(context.destination);
src.start(0);
},onError);
}
request.send();
}
loadCatSound(“opus.opus”);
函数playCatSound(){
if(catMeowingBuffer!==null){
var src=context.createBufferSource();
src.buffer=catMeowingBuffer
connect(context.destination);
src.start(0);
}
}
//});
解码音频数据样本
播放声音


这是Chrome中的一个bug。查看。

谢谢,很高兴看到它被注意到。正如我在问题中提到的,它看起来已经被修复,但需要一段时间才能稳定下来。3年后,我们终于可以在chrome中正确使用webaudio了