Mira este,
He usado el siguiente paquete https://www.npmjs.com/package/ng-audio-recorder
Y el siguiente código también sigue el ejemplo en la documentación.
stopRecording() { this.recorderState = RecorderState.STOPPING; this.cdRef.detectChanges(); this.audioRecorderService .stopRecording(OutputFormat.WEBM_BLOB) .then((outputBlob: Blob) => { if (outputBlob) { this.currentBlob = outputBlob; this.currentBlobUrl = URL.createObjectURL(outputBlob); this.recorderState = this.audioRecorderService.getRecorderState(); this.cdRef.detectChanges(); } }) .catch(errrorCase => { console.log(errrorCase); }); }¿Qué estoy haciendo mal?
Cuando graba audio usando js, se graba como un flujo de datos. En mi experiencia, todas las secuencias se comportan así en la mayoría de los reproductores de audio/video y solo algunos de ellos pudieron calcular la duración real. Supongo que es porque las transmisiones carecen de los metadatos que brindan la información correcta sobre estos. Algunos jugadores que lograron obtener la información correcta eran herramientas de edición profesionales, y supongo que de alguna manera estimaron la duración de alguna otra manera. Realmente no tengo ninguna documentación que respalde este razonamiento, pero esta es mi mejor suposición.
Editar: resulta que mis suposiciones eran correctas y puedes arreglar esto usando esta biblioteca que encontré en Github. creditos a daniel