2017-10-22 28 views
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); 
}); 

たぶん誰かがより正しいバリアントを提案することができますか?

+0

エラーがありますか、サウンドが再生されていないか、クライアント側でイベントが発生していませんか? –

+0

エラー:オーディオデータをデコードできません – Kaen

+0

サーバー上でファイルを正しく読み取ったかどうかわかりません。私はarraybufferを受け取りますが、audiocontextはエラーを返します。 – Kaen

答えて

0

ソケットを使用してAPIを構築してください。 もっと便利です。

だと思います。

関連する問題