- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我搜索了相关问题,但找不到任何相关信息。
我正在尝试让 Web Audio API 播放编码在另一个文件容器中的 mp3 文件,所以到目前为止我所做的是解析所述容器,并将结果二进制数据(arraybuffer)提供给audioContext.decodeAudioData 方法,它应该接受任何类型的包含音频数据的数组缓冲区。但是,它总是抛出错误回调。
我对自己在做什么只有模糊的了解,所以整个方法可能是错误的。或许这根本不可能。
你们以前有没有试过这样的事情?感谢您的帮助!
下面是一些代码,试图更好地说明这一点。以下只是存储数组缓冲区:
newFile: function(filename){
var that=this;
var oReq = new XMLHttpRequest();
oReq.open("GET", filename, true);
oReq.responseType = "arraybuffer";
oReq.onload = function (oEvent) {
var arrayBuffer = oReq.response; //
if (arrayBuffer) {
that.arrayBuffer=arrayBuffer;
that.parsed=true;
}
};
oReq.send(null);
这就是我在解码部分所做的:
newTrack: function(tracknumber){
var that=this;
var arraybuffer=Parser.arrayBuffer;
that.audioContext.decodeAudioData(arraybuffer,function(buffer){
var track={};
track.trackBuffer=buffer;
track.isLoaded=true;
track.trackSource=null;
track.gainNode=that.audioContext.createGainNode();
that.tracklist.push(track);
},alert('error'));
其中 Parser 是我用来解析和存储数组缓冲区(具有 newFile 函数)的对象字面量
所以,总而言之,我不知道是我做错了什么,还是根本做不到。
最佳答案
如果没有容器,我不确定 decodeAudioData
如何知道它是 MP3。或者比特率是多少。或者它有多少个 channel 。或者很多其他非常重要的信息。基本上,您需要告诉 decodeAudioData
如何解释 ArrayBuffer。
在客户端,我唯一能想到的就是尝试使用 Blob。您基本上必须自己编写 header ,然后在将其传递给 decodeAudioData
之前 readAsArrayBuffer
。
如果您有兴趣尝试一下,这里有一个规范: http://www.mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm
这里是 RecorderJS,它将向您展示如何创建 Blob(尽管它写入 RIFF/WAV header 而不是 MP3):
https://github.com/mattdiamond/Recorderjs/blob/master/recorderWorker.js
你会想看看 encodeWAV
方法。
无论如何,如果可以的话,我强烈建议您在服务器上解决这个问题。
关于javascript - 将 Web Audio API decodeAudioData 与外部二进制数据一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953259/
我正在使用 AudioContext 的 decodeAudioData 方法在 Chrome、Firefox 和 Opera 中播放音频。所有浏览器都能成功解码和播放使用 Firefox 录制的音频
我正在使用网络音频 API 将 n channel 音频文件解码为单独的 channel ,然后将这些 channel 渲染到 Canvas 上以直观地创建频率计。 我正在使用 decodeAudio
我来到这里希望 SO 上可爱的人们可以帮助我解决我遇到的一些问题。 具体来说,每次我尝试使用 webkitAudioContext 的 decodeAudioData 方法时,它总是会触发带有空错误的
我想制作一个小的浏览器应用程序,它能够播放不同的音符。因此,我将声音作为 Base64 编码的 js 变量。现在我必须先解码 Base64,然后再解码 mp3 格式,以使应用程序可以使用声音。此外,我
我正在创建一个电子应用程序,允许用户剪切和重新排列多个音频样本并无缝播放它们。样本的总持续时间可能超过一小时,所以我无法将它们全部解码并将它们存储为 pcm 数据。所以这是我实现的: - 首先解码创建
我正在尝试使用 Web Audio Api 为音乐编写自定义网络播放器,但我在解码音频时遇到了问题。 我正在使用 AudioContext.decodeAudioData 函数从后端获取 .mp3 作
尝试使用我为列景观制作的小型引擎构建 webgl 音频可视化器,我认为这对于随时间的频率分布非常有用。 现在,这个从 coffeescript 编译而来的代码使选项卡崩溃: (function() {
我想从 ArrayBuffer 播放音频数据...所以我生成我的数组并用麦克风输入填充它。如果我在 Canvas 上绘制这些数据,它看起来像 --> 所以这行得通! 但是如果我想听这个数据 conte
网络音频开发人员您好, 我在 Chrome 中收到“decodeAudioData error null”和Firebug 中的“decodeAudioData 错误未定义”。 Firebug 还说“
我正在尝试在Edge浏览器中使用WebAudio API的encodeAudioData()方法解码作品文件,但出现此错误WEBAUDIO17014:解码错误:提供的流已损坏。 边缘版本详细信息: 微
我目前正在尝试使 Opus 数据包与 Web Audio API 一起工作。然而,问题是,虽然 FireFox 和 Chrome 应该原生支持它,但只有 FireFox 可以使用 Web Audio
我搜索了相关问题,但找不到任何相关信息。 我正在尝试让 Web Audio API 播放编码在另一个文件容器中的 mp3 文件,所以到目前为止我所做的是解析所述容器,并将结果二进制数据(arraybu
问题 当使用 Web Audio API 创建音频缓冲区时,会存在由 decodeAudioData 方法创建的缓冲区,这些缓冲区驻留在内存中,显然无法通过 JavaScript 访问。它们似乎在浏览
我有以下非常基本的代码,它是一个更复杂问题的一部分。 我的问题是函数:context.decodeAudioData(arrayBuffer) 在 iPhone 上不工作(在 Safari 和 上试过
我有一个 mp3 音频流播放器,在每个桌面浏览器中都运行良好,使用 MediaSourceExtensions 并为那些不支持 MSE 的浏览器回退到 WebAudioAPI。 iOS Safari
嗨我的问题是我想解码通过 HTTP 方法接收的数组缓冲区以便在浏览器中播放它我的问题请看一下我将尝试解释更多的代码。 ngOnInit() { // this service re
我正在使用 getUserMedia() 和 mediaRecorder 来录制音频,然后我将其作为 base64 编码文本存储在服务器上。稍后,它从服务器检索,存储在客户端,然后,当用户单击播放按钮
我正在尝试使用 decodeAudioData 在 javascript 中解码和播放较大的 mp3 文件的初始部分。我的第一个粗略的方法是从 mp3 的开头切下一些字节并将它们提供给 decodeA
我是一名优秀的程序员,十分优秀!