Как конвертировать файл WAV в MP3 в проекте Next.js?

Для конвертации файлов WAV в MP3 в проекте на Next.js вам понадобится использовать стороннюю библиотеку, такую как ffmpeg, которая предоставляет возможность работать с мультимедийными файлами.

Вам сначала необходимо установить ffmpeg на сервере, на котором работает ваш проект Next.js. Если у вас нет возможности установить ffmpeg на сервере, вы также можете воспользоваться облачными сервисами, такими как ffmpeg.wasm, чтобы выполнять конвертацию файлов в браузере.

После установки ffmpeg, вы можете создать скрипт или использовать уже существующий код для вызова ffmpeg из вашего проекта Next.js. Например, вы можете создать API маршрут в Next.js, который принимает файл WAV, выполняет конвертацию в MP3 с помощью ffmpeg и возвращает новый файл MP3.

Пример реализации API маршрута для конвертации файлов WAV в MP3 в Next.js:

1. Установите ffmpeg и библиотеку child_process в вашем проекте Next.js:

npm install ffmpeg-static fluent-ffmpeg child_process

2. Создайте API маршрут в файле pages/api/convert.js:

import nextConnect from 'next-connect';
import ffmpeg from 'fluent-ffmpeg';
import { createReadStream, createWriteStream } from 'fs';

const handler = nextConnect();

handler.use((req, res, next) => {
  if (req.method !== 'POST') {
    return res.status(405).end();
  }
  
  const wavFile = req.body.wavFile;
  const mp3File = wavFile.replace('.wav', '.mp3');

  ffmpeg()
    .input(createReadStream(wavFile))
    .toFormat('mp3')
    .on('end', () => {
      res.download(mp3File);
    })
    .on('error', (err) => {
      console.error(err);
      res.status(500).json({ error: 'Failed to convert WAV to MP3' });
    })
    .save(mp3File);
});

export default handler;

3. Используйте этот API маршрут для отправки файлов WAV и получения файлов MP3:

fetch('/api/convert', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ wavFile: 'path/to/wav/file.wav' }),
})
  .then(response => response.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'converted.mp3';
    a.click();
    window.URL.revokeObjectURL(url);
  })
  .catch(error => console.error(error));

Это базовый пример, который демонстрирует как можно использовать ffmpeg для конвертации файлов WAV в MP3 в проекте на Next.js. Обратите внимание, что необходимо обрабатывать ошибки, проверять безопасность данных и управлять потоками данных при обработке больших файлов.