Для конвертации файлов из формата WAV в MP3 на серверной стороне с использованием Next.js, можно воспользоваться библиотекой ffmpeg, которая позволяет работать с мультимедийным контентом. Ниже приведен пример кода, который демонстрирует, как можно сделать это в проекте на Next.js:
1. Установите библиотеку ffmpeg-static, которая предоставляет статически скомпилированный ffmpeg:
```
npm install ffmpeg-static
```
2. Создайте функцию для конвертации файла из WAV в MP3:
```javascript
const ffmpegPath = require('ffmpeg-static').replace(
'app.asar',
'app.asar.unpacked'
);
const { exec } = require('child_process');
export default async function convertWavToMp3(wavFile) {
return new Promise((resolve, reject) => {
const mp3File = `${wavFile.replace('.wav', '.mp3')}`;
const command = `"${ffmpegPath}" -i "${wavFile}" -codec:a libmp3lame -qscale:a 2 "${mp3File}"`;
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(error);
reject(error);
return;
}
resolve(mp3File);
});
});
}
```
3. В вашем API роуте Next.js передайте файл формата WAV на сервер и выполните конвертацию:
```javascript
import fs from 'fs';
import convertWavToMp3 from '../utils/convertWavToMp3';
export default async function handler(req, res) {
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method Not Allowed' });
}
const { wavFile } = req.body;
const wavBuffer = Buffer.from(wavFile, 'base64');
const wavFilePath = 'input.wav';
fs.writeFileSync(wavFilePath, wavBuffer);
try {
const mp3FilePath = await convertWavToMp3(wavFilePath);
const mp3Buffer = fs.readFileSync(mp3FilePath);
res.setHeader('Content-Type', 'audio/mpeg');
res.end(mp3Buffer);
} catch (error) {
res.status(500).json({ error: 'Internal Server Error' });
}
}
```
4. Отправьте файл формата WAV на сервер для конвертации в MP3:
```javascript
const fs = require('fs');
const fetch = require('isomorphic-unfetch');
const filename = 'audio.wav';
const wavBuffer = fs.readFileSync(filename);
const base64Wav = wavBuffer.toString('base64');
fetch('/api/convert', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ wavFile: base64Wav }),
})
.then((res) => res.arrayBuffer())
.then((data) => {
const mp3Buffer = Buffer.from(data);
fs.writeFileSync('output.mp3', mp3Buffer);
})
.catch((error) => console.error(error));
```
Этот пример показывает базовую реализацию конвертации файлов из WAV в MP3 на серверной стороне с использованием Next.js. Помните, что необходимо установить ffmpeg на сервере для работы данного кода. Не забудьте обработку ошибок и безопасное хранение файлов на сервере.