gpt4 book ai didi

html - 网络音频在 Chrome 中播放,但在 Firefox 中不播放

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:02 24 4
gpt4 key购买 nike

Firefox 似乎正在处理音频,但不会播放。这个确切的代码适用于 Chrome。我没有从控制台看到任何错误,所以我真的很茫然。我认为它与 audioBuffer.getChannelData(0).set(audio); 有关但我不确定。任何人都知道为什么这个音频不会在 FF 中播放但会在 Chrome 中播放?我现在正在运行 FF 27。

window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
var init = 0;
var nextTime = 0;
var audioStack = [];

function toArrayBuffer(buffer) {
var ab = new ArrayBuffer(buffer.length);
var view = new Uint8Array(ab);
for (var i = 0; i < buffer.length; ++i) {
view[i] = buffer[i];
}
return ab;
}

socket.on('stream', function(data) {
audioStack.push(data);
//if ((init!=0) || (audioStack.length > 10)) { // make sure we put at least 10 chunks in the buffer before starting
init++;
scheduleBuffers();
//}
});

function scheduleBuffers() {
while (audioStack.length) {

var data = toArrayBuffer(audioStack.shift().data);
var audio = [];
audData = new Int16Array(data);
for (var i = 0; i < audData.length; i++) {
audio[i] = (audData[i]>0)?audData[i]/32767:audData[i]/32768; // convert buffer to within the range -1.0 -> +1.0
}

var source = context.createBufferSource();
var audioBuffer = context.createBuffer(1, audio.length , 44100);
source.buffer = audioBuffer;

audioBuffer.getChannelData(0).set(audio);

source.connect(context.destination);
if (nextTime == 0)
nextTime = context.currentTime + 0.05; /// add 50ms latency to work well across systems - tune this if you like
source.start(nextTime);
console.log('length: '+source.buffer.duration);
nextTime+=source.buffer.duration; // Make the next buffer wait the length of the last buffer before being played
};
}

最佳答案

查看这段代码:

    source.buffer   = audioBuffer;
audioBuffer.getChannelData(0).set(audio);

你能试试改变这两行的顺序吗?也就是说,先给audioBuffer设置 channel 数据,然后赋值给source.buffer。这能解决您的问题吗?

关于html - 网络音频在 Chrome 中播放,但在 Firefox 中不播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288726/

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