it-swarm.com.de

Wie kann ich Codec, Samplerate und Bitrate für einen Audio-Blob in Javascript einrichten?

Ich habe gerade einen Blob erstellt:

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });

und schickte es im Base64-Format an das Backend. Ich habe dies in einer Datei mit dem Namen "test.wav" mit folgendem Code gespeichert:

await writeFile('./temp/test.wav', Buffer.from(filename.replace('data:audio/wav; codecs=0;base64,', ''), 'base64'), 'base64');

In der Ausgabedatei "test.wav" bekomme ich den Codec als Opus, Bitrate = N/A und Sample Rate = 48000. Ich möchte diese Werte in codec = wav, Bitrate = 256 kbps und Abtastrate = 16000 ändern. Wie erreicht man es in Knoten (oder Winkel)?

Hier ist ein Link für meinen Frontend-Code.

7
Ravi Yadav

Diese Zeile enthält nur Mime-Informationen, hat jedoch keinen Einfluss auf die tatsächliche Ausgabe

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });

Um den richtigen Audiocodec und die Bitrate auszuwählen, starten Sie die Aufnahme mit den folgenden Optionen

var options = {
  audioBitsPerSecond : 128000,
  mimeType : 'audio/ogg'
}
var mediaRecorder = new MediaRecorder(stream, options);

Soweit ich weiß, wird ogg-Codec standardmäßig in WebRTC unterstützt, ist also Cross-Browser-kompatibel

Auf der Backend-Seite müssen Sie später den ogg-Audiostream in einen beliebigen anderen Bereich umwandeln, z. B. fluent-ffmpeg

1