node.js - streams - video streaming node js
createWriteStream vs writeFile? (1)
¿Cuál es la diferencia básica entre estas dos operaciones?
someReadStream.pipe(fs.createWriteStream(''foo.png''));
vs
someReadStream.on(''data'', function(chunk) { blob += chunk } );
someReadStream.on(''end'', function() { fs.writeFile(''foo.png'', blob) });
Cuando uso la biblioteca de solicitudes para raspar, puedo guardar imágenes (png, bmp), etc. solo con el método anterior y con el último, hay los mismos datos de gibbersh (binarios) pero la imagen no se procesa.
En qué se diferencian ?
Cuando trabaje con transmisiones en node.js, preferirá canalizarlas.
De acuerdo con los datos de Node Docs , los eventos emiten ya sea buffer (por defecto) o string (si la codificación fue establecida).
Cuando trabaja con secuencias de texto, puede utilizar el evento ''datos'' para concatenar todos los fragmentos de datos. Entonces podrá trabajar con sus datos como con una cadena común.
Pero cuando trabajas con datos binarios no es tan simple, porque recibirás búferes. Para concatenar almacenamientos intermedios, debe usar métodos especiales, como Buffer.concat
. Por lo tanto, es posible utilizar dicho enfoque para transmisiones binarias, pero no vale la pena.
Actualizar
Si quieres hacerlo de manera difícil, prueba el siguiente código:
var buffers = [];
readstrm.on(''data'', function(chunk) {
buffers.push(chunk);
});
readstrm.on(''end'', function() {
fs.writeFile(''foo.png'', Buffer.concat(buffers));
});
No puedo probar, pero se ve bien.
Es fácil darse cuenta cuando algo salió mal al verificar el tamaño del archivo.