Узел - Как написать аудио файл

1

Я делаю приложение, которое записывает то, что говорит пользователь, и сохраняет его в файл. Чтобы получить звук с микрофона, я использую пакет с узловым микрофоном. Мое приложение в настоящее время может получить звук с микрофона. Однако, когда я пытаюсь записать поток в аудиофайл и воспроизводить его, я получаю следующую ошибку.

Проигрыватель Windows Media не может воспроизвести файл. Плеер может не поддерживать тип файла или может не поддерживать кодек, который использовался для сжатия файла.

Кто-нибудь знает, как записать аудио в файл в узле?

var fs = require('fs');
const { Writable } = require('stream');
var writeStream = fs.createWriteStream('./output.wav');

const outStream = new Writable({
  write(chunk, encoding, callback) {
    console.log(chunk);
    writeStream.write(chunk);
    callback();
  }
});
let Mic = require('node-microphone');
let mic = new Mic();
let micStream = mic.startRecording();
micStream.pipe( outStream );

mic.on('info', (info) => {
    console.log('Info: ',info);
});
mic.on('error', (error) => {
    console.log('error:', error);
});
mic.on('stop', (stop) => {
    console.log('stop:', stop);
});

setTimeout(() => {
  console.log('stopped recording');
  mic.stopRecording();

}, 3000);
Теги:
audio
stream

1 ответ

1
Лучший ответ

Документация node-microphone гласит:

начать запись()

Начните запись с заданных параметров звука в классе. Создает новый дочерний процесс. Он вернет запись волнового потока PCM как поток узла.

Я предполагаю, что в ваших файлах отсутствуют правильные заголовки. Один из следующих модулей может помочь вам:


node-wav

Класс Writer принимает исходные звуковые данные, записанные на него (в настоящее время поддерживаются только аудиоданные PCM), и вначале выводит WAV файл с допустимым заголовком WAVE, указывающим информацию о форматировании аудиопотока.


audiobuffer-to-wav

 var toWav = require('audiobuffer-to-wav')
 var wav = toWav(buffer) // encode AudioBuffer to WAV 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню