Почему онлайн-диктофон сохраняет WebM, а не MP3
Разбираемся, почему браузерный диктофон может скачать WebM, OGG или MP4 вместо MP3, как проверить реальный формат и когда нужна конвертация.
Если после записи голоса скачался файл mediatik-voice.webm, не определяйте
формат только по расширению. Онлайн-диктофон показывает
фактический MIME-тип из MediaRecorder, и при проверке файла нужно опираться
именно на него. Для неизвестного формата, выбранного браузером по умолчанию,
текущая функция скачивания тоже использует расширение .webm. Одно можно
сказать точно: запись не становится MP3 от переименования файла.
Короткий ответ
Mediatik использует браузерный API MediaRecorder. Перед началом записи
инструмент по порядку проверяет WebM с Opus, OGG с Opus, аудио в контейнере MP4
и WebM без явно указанного кодека. Он берёт первый вариант, для которого
браузер возвращает поддержку.
Если ни один вариант не заявлен как поддерживаемый, выбор остаётся за
браузером. После остановки записи mediatik берёт фактический mimeType у
MediaRecorder и показывает формат в интерфейсе. Для известных контейнеров из
списка инструмент подбирает расширение .webm, .ogg или .mp4.
Поэтому один браузер может сохранить .webm, а другой .ogg или .mp4.
Mediatik не обещает одинаковый контейнер на всех устройствах и не заявляет
экспорт в MP3 в текущей версии.
Почему WebM бывает аудиофайлом
WebM является контейнером, а не синонимом видео. Он может содержать только аудиодорожку,
например звук, сжатый кодеком Opus. Поэтому файл mediatik-voice.webm,
созданный диктофоном, не обязан иметь видеоряд.
Контейнер организует данные в файле, например WebM, OGG или MP4. Кодек, такой как Opus, сжимает аудиопоток. Расширение лишь помогает программе предположить контейнер и не меняет данные внутри файла.
Строка MIME может выглядеть как audio/webm;codecs=opus. Именно это сочетание
контейнера и кодека описывает результат точнее, чем одно расширение .webm.
Как браузер выбирает формат
Метод MediaRecorder.isTypeSupported() на MDN
позволяет спросить браузер, должен ли он уметь записывать заданный MIME-тип.
Положительный ответ подтверждает заявленную поддержку, но не гарантирует любую
запись при нехватке ресурсов или проблеме с устройством.
Свойство MediaRecorder.mimeType на MDN
показывает MIME-тип, выбранный приложением или самим браузером для получаемого
файла. Несовместимое сочетание контейнера и кодека может привести к тому, что
файл не запишется или не будет нормально воспроизводиться.
Поэтому mediatik не создаёт Blob с названием .mp3, когда фактический поток
записан как WebM. Такое переименование выглядело бы удобнее, но оставило бы
внутри другой формат и вводило бы в заблуждение принимающее приложение.
Что делать, если сервис принимает только MP3
Сначала проверьте, нужен ли принимающей стороне именно MP3. Некоторые формы загрузки умеют воспроизводить WebM или MP4, хотя в подсказке перечислены не все варианты. Если форма явно отклоняет файл, действуйте так:
- Сохраните исходную запись из mediatik без переименования.
- Проверьте формат, показанный рядом с записью.
- Конвертируйте копию в MP3 отдельным инструментом, который действительно перекодирует аудио.
- Прослушайте полученный MP3 до отправки: проверьте начало, конец и громкость.
- Оставьте исходник, пока загрузка или монтаж не завершены.
Не меняйте .webm на .mp3 вручную. Расширение станет другим, но исходные
контейнер и кодек, выбранные браузером, не изменятся. Поэтому проверка формата
может завершиться ошибкой.
Что происходит с записью в mediatik
Микрофон запрашивается через разрешение браузера. Во время записи аудиочасти собираются в открытой вкладке, после остановки из них создаётся локальный Blob для предпросмотра и скачивания. Запись не отправляется на сервер и не проходит скрытую серверную конвертацию.
Локальная обработка не означает, что файл автоматически станет MP3. Для
перекодирования нужен отдельный аудиокодек и дополнительная обработка. В первой
версии mediatik этого этапа нет: инструмент сохраняет честный результат
MediaRecorder и показывает его MIME-тип.
Проверка перед использованием записи
Запишите показанный в интерфейсе MIME-тип и прослушайте файл от начала до конца. Сверьте допустимые контейнеры и кодеки системы-получателя. Если ей нужен MP3, выполните настоящую конвертацию вместо переименования и сохраните исходную запись до завершения загрузки или монтажа.
Если важна запись без промежуточного сервера, откройте диктофон mediatik, разрешите доступ к микрофону и перед скачиванием посмотрите формат, который выбрал браузер.
Вопросы
Почему запись скачалась как WebM?
Расширение .webm используется для известных вариантов WebM и для неизвестного формата, выбранного браузером по умолчанию. Проверьте фактический MIME-тип в интерфейсе; только он описывает результат точнее имени файла.
Можно ли просто переименовать .webm в .mp3?
Нет. Переименование меняет только имя, но не контейнер и кодек. Приложение, которому нужен именно MP3, всё равно может отклонить такой файл.
Отправляет ли mediatik запись на сервер для конвертации?
Нет. В текущей версии запись создаётся и прослушивается локально в браузере. Встроенной конвертации в MP3 нет.