Im Anschluss an reicht von Node - how can i pipe to a new READABLE stream?node.js - eine neue Readstream für eine neue Datei erstellen, wenn die Datei eine bestimmte Größe
Ich versuche, eine neue ReadStream
für meine Live-kodierte MP3-Datei zu starten, wenn es sich um ein erreicht bestimmte Größe (pre-Pufferung im wesentlichen) durch fs.watch
und fs.stat
verwenden.
Es funktioniert, aber sobald die ReadStream
begonnen hat, ich weiß nicht, wie die Beobachter zu beenden und den Strom am Laufen zu halten.
ich ein Versprechen, wie unten versucht habe, aber das ist nie gelöst, so streamEncodedFile
wiederholt aufgerufen wird:
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 });
});
}
Mein anderer erbärmlicher Versuch ist nur den Strom bei einer bestimmten Dateigröße zu versuchen und zu starten:
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 ('Veränderung', (event, Pfad) => { fs.stat (mp3RecordingFile, Funktion (err, Statistiken) { if (stats.size> 75533) { streamEncodedFile();} }); }); Funktion streamEncodedFile() { var mp3File = fs.createReadStream (mp3RecordingFile); mp3File.on ('Daten', Funktion (Puffer) { io.sockets.emit ('Audio', { Puffer: Puffer }); }); watcher.close(); } ' – dottodot
Danke. Ich hätte sagen sollen, dass ich das versucht habe, aber der ReadStream endete. Das glaube ich deshalb https://github.com/jasontbradshaw/tailing-stream – user3174541