從Node - how can i pipe to a new READABLE stream?的Node.js - 創建一個新的ReadStream一個新的文件,當文件達到一定規模
我想開始新的ReadStream
我的直播編碼的MP3文件,當它到達一個繼通過使用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();
}
});
});
'變種觀察者= fs.watch(mp3RecordingFile); watcher.on( '變更',(事件,路徑)=> { fs.stat(mp3RecordingFile,函數(ERR,統計數據){ 如果(stats.size> 75533){ streamEncodedFile();} }); }); function streamEncodedFile(){ var mp3File = fs.createReadStream(mp3RecordingFile); mp3File.on('data',function(buffer){io.sockets.emit('audio',{ buffer:buffer }); }); watcher.close(); }' – dottodot
謝謝。我應該說我嘗試過,但是ReadStream結束了。這我相信是爲什麼https://github.com/jasontbradshaw/tailing-stream – user3174541