は、それが到達したとき、私は私のライブでエンコードされたMP3ファイルの新しいReadStream
を開始しようとしていますNode - how can i pipe to a new READABLE stream?Node.jsのは - そのファイルが
に続いて、特定のサイズに達すると、新しいファイルの新しいReadStreamを作成しますfs.watch
とfs.stat
を使用して特定のサイズ(本質的にバッファリング前)を指定します。
それは動作しますが、ReadStream
が起動した後、私はウォッチャーを終了し、ストリームの実行を継続する方法がわかりません。
私は以下のように約束を試してみたが、それが解決されることはありませんので、streamEncodedFile
が繰り返し呼び出されます。
var watcher = fs.watch(mp3RecordingFile);
watcher.on('change', (event, path) => {
fs.stat(mp3RecordingFile, function (err, stats) {
if (stats.size > 75533) {
new Promise(function(resolve, reject) {
streamEncodedFile();
})
.then(function(result) {
watcher.close();
console.log('watcher closed');
});
}
});
});
function streamEncodedFile() {
var mp3File = fs.createReadStream(mp3RecordingFile);
mp3File.on('data', function(buffer){
io.sockets.emit('audio', { buffer: buffer });
});
}
私の他の哀れな試みが唯一の特定のファイルサイズでストリームをしようとして開始することです:
watcher.on('change', (event, path) => {
fs.stat(mp3RecordingFile, function (err, stats) {
console.log(stats.size);
if (stats.size > 75533 && stats.size < 75535) {
streamEncodedFile();
} else if (stats.size > 75535) {
watcher.close();
}
});
});
'var watcher = fs.watch(mp3RecordingFile); watcher.on( '変更'、(イベント、パス)=> { fs.stat(mp3RecordingFile、関数(ERR、統計){ IF(stats.size> 75533){ streamEncodedFile();} }); }); 関数streamEncodedFile(){ VAR mp3File = fs.createReadStream(mp3RecordingFile)。 mp3File.on( 'data'、function(buffer){ io.sockets.emit( 'audio'、{ バッファ:バッファ }); }); watcher.close(); } ' – dottodot
ありがとうございます。私はそれを試みたと言っていたはずですが、ReadStreamが終了しました。これは私が信じている理由はhttps://github.com/jasontbradshaw/tailing-stream – user3174541