Как конвертировать MP3 в Base64
- Перетащите файл
.mp3в поле или выберите его через диалог. - Прослушайте превью, чтобы убедиться, что это тот самый клип.
- Для HTML и JavaScript оставьте в Формат вывода вариант Data URI, а для API переключитесь на Чистый Base64 или JSON.
- Нажмите Скопировать результат или, для длинных файлов, Сохранить как .txt.
Длина для разных битрейтов
Размер MP3 равен битрейту, умноженному на длительность, а Base64 добавляет к нему треть. В таблице посчитаны только аудиоданные, без тегов:
| Битрейт | 1 секунда | 10 секунд | 1 минута |
|---|---|---|---|
| 64 кбит/с | 10 668 симв. | 106 668 симв. | 640 000 симв. |
| 128 кбит/с | 21 336 симв. | 213 336 симв. | 1 280 000 симв. |
| 192 кбит/с | 32 000 симв. | 320 000 симв. | 1 920 000 симв. |
| 320 кбит/с | 53 336 симв. | 533 336 симв. | 3 200 000 симв. |
Для звука уведомления или голосовой подсказки обычно хватает 64 кбит/с в моно, и строка остаётся короткой. Если клип длиннее, чем нужно, перед кодированием переэкспортируйте его в аудиоредакторе с меньшим битрейтом.
Тег ID3 может занимать большую часть файла
MP3 из музыкальных библиотек несут в начале тег ID3v2, а в нём часто лежит встроенная обложка. Двухсекундный звуковой эффект может прийти с обложкой, которая больше самого аудио, и всё это попадает в Base64.
Тег видно сразу: результат начинается с SUQz. SUQzBA означает ID3 версии 2.4, а SUQzAw означает версию 2.3. Если файл предназначен для звука интерфейса или для API, удалите теги в аудиоредакторе или редакторе тегов и закодируйте уже чистый файл. Счётчик под результатом покажет разницу.
Как использовать MP3 в Base64
В HTML:
<audio controls src="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2..."></audio>
В JavaScript data URI работает везде, где работает URL:
const ping = new Audio("data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2...");
document.querySelector("#send").addEventListener("click", () => ping.play());
Вызывайте play() после действия пользователя, например клика, иначе браузер заблокирует звук.
Для JSON API используйте Чистый Base64, если в документации API не сказано про data URI. Сервисы распознавания речи, в частности, обычно ждут чистый Base64 и отдельное поле с форматом аудио.
Частые проблемы
- Плеер молчит. Проверьте, что data URI начинается с
data:audio/mpeg;base64,, а URL-safe (- _) и Перенос по 76 выключены. Символы URL-safe недопустимы вdata:URL, а переводы строк обрывают строковый литерал в JavaScript. - Длительность неверная или перемотка скачет. MP3 с переменным битрейтом без правильного заголовка могут сбивать плееры с толку. Дело в самом файле: переэкспортируйте его в аудиоредакторе.
- Нужно получить файл обратно. Base64 в MP3 декодирует строку и позволяет прослушать или скачать файл. Для других форматов см. Аудио в Base64.
Вопросы и ответы
Какой MIME-тип правильный для MP3 в Base64?
audio/mpeg. В некоторых примерах кода встречается audio/mp3, но зарегистрирован тип audio/mpeg, и API, которые проверяют тип, ждут именно его.
Почему Base64 моего MP3 начинается с SUQz?
SUQz кодирует ID3, начало тега ID3v2 с названием, исполнителем и, возможно, обложкой. MP3 без тега начинается сразу с аудиокадра, который кодируется в // и букву, например //uQ или //OQ.
Сколько символов Base64 занимает минута MP3?
При 128 кбит/с минута аудио занимает 960 000 байт, а в Base64 это 1 280 000 символов. При 64 кбит/с вдвое меньше. Теги и обложка добавляются сверху.