0
socket.ioでオーディオファイル(またはチャンク)を送信しようとしています。audiocontextのバッファをsocket.io(node.js)経由で送信します。
私が試した:
// server
socket.on('client-get-audio', function (data) {
//data.fname - name of requested file
var buffer = fs.readFileSync(data.fname, null);
// try 2 - read arraybuffer
//var buffer = fs.readFileSync(data.fname, null).buffer;
buffer = new Uint8Array(buffer);
socket.emit('audio-data', {count: 1, buff: buffer});
});
を私はデータをデコードすることはできません。
// client
// ctx - AudioContext
// source - buffer source
socket.on('audio-data', function(data){
ctx.decodeAudioData(data.buff, decoded => {
source.buffer = decoded;
source.start(0);
});
私はすべての私の試みを説明しませんが、それらの多くがありました。
更新
ワーキング・バリアント
// server
socket.on('client-get-audio', function (data) {
//data.fname - name of requested file
var buffer = fs.readFileSync(data.fname, null);
socket.emit('audio-data', {count: 1, buff: buffer});
});
// client
function toArrayBuffer(buf) {
var ab = new ArrayBuffer(buf.length);
var view = new Uint8Array(ab);
for (var i = 0; i < buf.length; ++i) {
view[i] = buf[i];
}
return ab;
}
// ctx - AudioContext
// source - buffer source
socket.on('audio-data', function(data){
ctx.decodeAudioData(toArrayBuffer(data.buff.data), decoded => {
source.buffer = decoded;
source.start(0);
});
たぶん誰かがより正しいバリアントを提案することができますか?
エラーがありますか、サウンドが再生されていないか、クライアント側でイベントが発生していませんか? –
エラー:オーディオデータをデコードできません – Kaen
サーバー上でファイルを正しく読み取ったかどうかわかりません。私はarraybufferを受け取りますが、audiocontextはエラーを返します。 – Kaen