Tengo un depósito de almacenamiento de binarios (en Firebase Storage) y estoy implementando una función de nube node.js que obtiene un audio (audio/m4a o audio/caf), verifica su formato y duración, y luego asocia su uri con un documento en mi base de datos (o elimina el archivo de audio si su duración no es válida).
Antes de crear el documento en mi base de datos, necesito validar el archivo de audio.
Para descargar los archivos del almacenamiento, estoy usando esta función:
exports.downloadBinaryFileFromUrl = function (fileUrl) { /* This function downloads a binary-encoded file from its URL and returns it */ return axios .get(fileUrl, { responseType: "arraybuffer", }) .then((res) => Buffer.from(res.data, "binary")) .catch((err) => { if (err.response) { /* The request was made and the server responded with a status code that falls out of the range of 2xx */ throw err.response.data; } else if (err.request) { // Client never received a response, or request never left throw err.request; } else { // Something happened in setting up the request that triggered an Error throw new Error(`Error: ${err.message}`); } }); };
¿Alguna idea de cómo obtener la duración del archivo de audio usando Node.js?