Efrosinium
@Efrosinium
Full Stack Developer

Как сделать конвертацию WebM в Ogg после записи с помощью Mediarecorder?

Здравствуйте! Я не любитель задавать вопросы на каких-то сайтах, потому что привык находить всё с помощью гугления. Но тут у меня уже нет сил и терпения чтобы продолжать.

Существует Mediarecorder в JS коде, который записывает аудио с микрофона в формате audio/webm с кодировкой opus. Каждые n секунд при событии ondataavailable выбрасывается blob. Данный блоб необходимо перекодировать в формат audio/ogg. Как это сделать?

var mediaRecorder = new MediaRecorder(mediaStream, {
   mimeType: 'audio/webm; codecs="opus"'
});
    
mediaRecorder.ondataavailable = (event) => {
    if (event.data.size > 0) {
        console.log(event.data);
        // тут мы получаем blob в формате audio/ogg
    }
}

mediaRecorder.start(250);    // 250 - интервал в мс, по которому вызывается ondataavailable


Я уже использовал библиотеку libvorbis.js с её VorbisRecorder. Она превращает webm в ogg, но есть одна проблема - не реализована возможность ondataavailable по определённому интервалу времени.

Ответы на возможные вопросы:

Зачем тебе эти извращения? Почему не используешь сразу WebM?

Проблема в том, что Google Chrome не может записывать аудио в формате ogg. Только webm. Для работы API с другого сайта необходим именно формат audio/ogg.

Просто используй ffmpeg, этого будет достаточно!

Я не спорю, но, как? Начнём с того, что я пробовал реализовать данный путь. Каждое аудио отправлялось на Node.JS сервер, записывалось на сервере, преобразовывалось ffmpeg... стойте, нет, не преобразовывалось. FFmpeg выбивал ошибку, которая была связана с целостностью аудио. Может, у меня руки не из того места, поэтому я сделал что-то не так когда передавал аудио из браузера на сервер. Переданный файл был будто "повреждён". Если у Вас есть готовое решение в виде Node.JS - буду очень рад.

На деле неважно на каком языке будет решение, мне необходимо понять: "как это сделать?". Благодарен всем, кто прочитал! Может найдётся тот, кто поможет решить данную проблему.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы