gpt4 book ai didi

javascript - decodeAudioData - 无法解码音频数据

转载 作者:行者123 更新时间:2023-11-30 15:27:38 58 4
gpt4 key购买 nike

我正在使用 AudioContext 的 decodeAudioData 方法在 Chrome、Firefox 和 Opera 中播放音频。所有浏览器都能成功解码和播放使用 Firefox 录制的音频。但是当使用 Chrome 或 Opera 录制音频时,只有 Firefox 成功解码并播放。在 Chrome 或 Opera 中解码音频时出现以下错误:

Uncaught (in promise) DOMException: Unable to decode audio data.    

我试图实现此处提到的 Ladislav Nevery 建议的修复: decodeAudioData returning a null error

实现的代码成功执行了他的建议(遍历缓冲区以找到音频流中的起点),但对于 Firefox 录制的音频,在 Chrome 中解码仍然失败。

知道解码失败的原因吗?

    function syncStream(node){ // should be done by api itself. and hopefully will.
var buf8 = new Uint8Array(node.buf);
buf8.indexOf = Array.prototype.indexOf;
var i=node.sync, b=buf8;
while(1) {
node.retry++;
i=b.indexOf(0xFF,i); if(i==-1 || (b[i+1] & 0xE0 == 0xE0 )) break;
i++;
}
if(i!=-1) {
var tmp=node.buf.slice(i); //carefull there it returns copy
delete(node.buf); node.buf=null;
node.buf=tmp;
node.sync=i;
return true;
}
return false;
}

export function loadAudio(deckId) {
store.audioPlayerDomain.audioLoading = true;
let activeRecord = getActiveRecordByDeckId(deckId);
let path = `${deckId}/${activeRecord.id}`;
let context = getAudioContext();
let processFn = function(node){
return context.decodeAudioData(node.buf, function (decoded) {
return decoded;
},
function(){ // only on error attempt to sync on frame boundary
if(syncStream(node)){
return processFn(node);
};
});
};
return AudioPlayerWebAPI.default.getAudio(path, context)
.then((buffer) => {
let node = {};
node.buf=buffer;
node.sync=0;
node.retry=0;
return processFn(node);
}).then(function(decodedData) {
store.audioPlayerDomain.audio = decodedData;
store.audioPlayerDomain.audioLoading = false;
return true;
});
}

....

getAudio(path, context) {
return fetch(`/api/public/audio/${path}`)
.then(processResponse)
.then(function(response) {
if(response.message && response.message === 'non-existent'){
return null;
}else{
return response.arrayBuffer();
}
})
},

最佳答案

直到最近,decodeAudioData 还无法解码 Chrome 的 MediaRecorder 的结果。试试 Chrome canary 或 beta 看看这个问题是否已修复。如果您仍然有问题,请提供一个更完整(但简单)的例子来说明什么不起作用。

关于javascript - decodeAudioData - 无法解码音频数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42739112/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com