Arhn - архитектура программирования

Установка типа MIME blob на wav по-прежнему приводит к webM

Я следил за этой статьей ( код до шага 6), чтобы сделать аудиомагнитофон, как показано ниже. После создания audioBlob я вызываю пользовательскую функцию для загрузки большого двоичного объекта. Эта функция работает для других типов файлов.

Я передаю { type: 'audio/wav' } конструктору Blob. Полученный файл действительно притворяется волновым файлом и будет нормально воспроизводиться в браузере, но не на iOS. Я проверил с помощью http://checkfiletype.com/ и обнаружил, что файл на самом деле был WebM:

введите здесь описание изображения

Как убедиться, что файл действительно является файлом .wav?

Код, отредактированный из этой статьи:

navigator.mediaDevices.getUserMedia({ audio: true })
  .then(stream => {
    const mediaRecorder = new MediaRecorder(stream);
    mediaRecorder.start();

    const audioChunks = [];
    mediaRecorder.addEventListener("dataavailable", event => {
      audioChunks.push(event.data);
    });

    mediaRecorder.addEventListener("stop", () => {
      const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });

      // Custom upload function
      uploadFile(audioBlob);
    });

    setTimeout(() => {
      mediaRecorder.stop();
    }, 3000);
  });
16.07.2018

Ответы:


1

Как убедиться, что файл действительно является файлом .wav?

Довольно просто, ни один браузер (я знаю) не поддерживает экспорт в wav изначально. Таким образом, вы можете быть уверены, что ваш файл не является файлом wav.

Параметр type конструктора BLOB-объектов только говорит браузеру, как он должен установить MIME-тип для дальнейших нужд (например, когда он будет отправлять его на сервер). Но на самом деле это не меняет содержимое, которое вы передали в качестве первого аргумента.

Таким образом, он не волшебным образом преобразует ваш файл webm в другой формат.

Теперь у вас есть некоторые параметры для изменить формат, в котором MediaRecorder будет выводить свой контент, но набор поддерживаемых форматов/кодеков зависит от реализации, и я не думаю, что какой-либо браузер поддерживает что-либо еще, кроме opus, либо в Контейнер webm или в контейнере ogg * one (* только для FF).

[edit]: на самом деле Chrome теперь поддерживает PCM в веб-сайт.

Благодаря isTypeSupported, вы можете очень хорошо настроить свой код для использования этого формата, если он когда-либо станет доступным, но лично я не стал бы слишком на это надеяться и ищите в другом месте, если требуется вывести wav файл...

const mime = ['audio/wav', 'audio/mpeg', 'audio/webm', 'audio/ogg']
  .filter(MediaRecorder.isTypeSupported)[0];
const recorder = new MediaRecorder(stream, {
  mimeType: mime
});
17.07.2018
  • любой другой способ конвертировать аудио/webm или аудио/ogg-контент в формат аудио/wav? 04.02.2021
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..