2017-03-13 10 views
4

ストリーム上の.pipeを強制的に強制的に特定の時間/サイズごとにファイルに書き込む方法はありますか?ストリーミングノードjsの間にwavファイルに書き込む

基本的に、私は、オーディオでバッファを送信していると私はEMITを送るブラウザから、ストリームioのソケットを使用しています:

ブラウザ

 c.onaudioprocess = function(o) 
     { 
     var input = o.inputBuffer.getChannelData(0); 

      stream1.write(new ss.Buffer(convertFloat32ToInt16(input))); 

     } 

サーバー(nodejs)

var fileWriter = new wav.FileWriter('/tmp/demo.wav', { 
    channels: 1, 
    sampleRate: 44100, 
    bitDepth: 16 
}); 

ss(socket).on('client-stream-request', function(stream) 
{ 
    stream.pipe(fileWriter); 
} 

私が問題にしているのは、demo.wavファイルは、私は、マイクを停止するとき、ストリームです。しかし、私はいつも書くようにしたいと思います、私は、Googleを使用して音声認識を行うだろう、任意のアイデア?パイプを使ってGoogleから音声認識を呼び出すと、チャンクは小さすぎるため、Googleでは認識できません。

+0

こんにちは@peterpeterson、あなたはそれを動作させましたか?私はあなたと同じチュートリアルに従っていますが、binaryjの代わりにsocketを使いたいと思います。 – vinni

答えて

0

ノードstream APIを見てみると、オプションパラメータをパイプ関数に追加できるはずです。 お試しください

stream.pipe(fileWriter, { end: false }); 
+0

これはファイルを保存しません。実際にはデフォルトではtrueですが、これは必要なものですが、常にストリーミングしているので、ストリーミングを終えると書き込みますが、ストリームの一部を保存したい、たとえば1mbごと新しいファイルへの書き込み、または1分ごとの別のファイルへの書き込みなど。 – peterpeterson

+0

setTimeoutを使用して、ストリームを手動で 'fileWriter.end()'で終了することができます。 – Skabbi

関連する問題