web-dev-qa-db-fra.com

Comment configurer le codec, le taux d'échantillonnage et le débit binaire d'un blob audio en javascript?

Je viens de créer un blob:

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

et envoyé au backend au format base64. J'ai enregistré ceci dans un fichier nommé "test.wav" en utilisant le code suivant:

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

Sur le fichier de sortie "test.wav", je reçois le codec en tant qu'opus, bitrate = N/A et fréquence d'échantillonnage = 48000. Je veux changer ces valeurs en codec = wav, bitrate = 256kbps et fréquence d'échantillonnage = 16000. Comment y parvenir en noeud (ou angulaire)?

Ici est un lien pour mon code frontal.

7
Ravi Yadav

Cette ligne fournit uniquement des informations sur le mime mais n'affecte pas la sortie réelle

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

Pour sélectionner le codec audio et le débit appropriés, démarrez l'enregistrement avec les options suivantes

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

Autant que je sache, le codec ogg est supporté par défaut dans WebRTC, il est donc compatible avec tous les navigateurs

Plus tard, côté backend, vous devrez transformer le flux audio ogg en tout ce que vous voulez, en utilisant par exemple fluent-ffmpeg

1
Andrii Muzalevskyi