Загрузить файл
  1. base64hub
  2. Инструменты для файлов
  3. Base64 в MP4

Base64 в MP4

Вставьте MP4 в Base64, чтобы посмотреть видео на этой странице и сохранить его файлом .mp4. Если на деле это MOV, M4A или недокачанный файл, инструмент скажет об этом.

Бесплатно без регистрации и ограничений Локально ничего не загружается Распознаёт MP4, MOV, M4A и 3GP по бренду Обновлено 27 окт. 2026 г.
Ввод –Результат –Размер –

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как декодировать Base64 в MP4

  1. Вставьте Base64 в поле Base64 или data URI. Префикс data:video/mp4;base64, можно не убирать. Длинные строки открывайте кнопкой Открыть файл .txt; всё, что больше 4 MB, декодируется без показа в текстовом поле.
  2. Плеер загрузит ролик. Длительность и Размеры появятся, когда браузер прочитает индекс, например 0:02.0 и 96 × 64 px для примера.
  3. Посмотрите на область подсказок: для настоящего MP4 она пуста, иначе там будет назван формат.
  4. Нажмите Скачать файл.

Декодирование и воспроизведение остаются внутри браузера; странице запрещено выполнять сетевые запросы, кроме счётчика просмотров Cloudflare.

MP4, MOV, M4A: одна структура, несколько форматов

Файлы MP4 состоят из боксов, и первый бокс, ftyp, содержит бренд, который говорит, какому варианту формата следует файл. Инструмент читает этот бренд:

Бренд в ftypОпределяется какПодсказка на этой странице
isom, mp41, mp42, avc1, iso6 и большинство остальныхMP4Нет
qtMOV (QuickTime)«Похоже на MOV, а не на MP4.» с кнопкой Скачать как .mov
M4AM4A«Похоже на M4A, а не на MP4.»: только аудио
3gp4, 3gp5 и другие бренды 3g3GP, старое видео с телефонов«Похоже на 3GP, а не на MP4.»
heic, mif1, avifHEIC, AVIF«Похоже на HEIC, а не на MP4.»: статичные изображения в той же структуре боксов

Ролик с брендом MP4 всё равно может содержать только звук. Он воспроизводится, а в строке Размеры написано только аудио. Если WebM прислали как «MP4», появится подсказка «Похоже на WebM, а не на MP4.»

Где лежит индекс и почему это важно для битых файлов

В каждом MP4 есть бокс moov: это индекс, по которому плеер находит каждый кадр. Многие кодировщики, включая ffmpeg, по умолчанию пишут его в конец файла, после медиаданных в mdat. С флагом -movflags +faststart ffmpeg переносит его в начало, чтобы потоковое воспроизведение могло начаться до того, как файл придёт целиком.

На этой странице весь файл находится в памяти, поэтому для полного ролика положение индекса не важно. Оно важно, когда Base64 обрезали из-за лимита размера в логе, столбце базы данных или очереди сообщений:

  • Индекс в конце: обрезка уносит индекс, и ничего не воспроизводится. Инструмент всё равно пишет MP4, потому что первые байты целы, а плеер сообщает, что не может воспроизвести файл, и в строке Длительность стоит «н/д».
  • Индекс в начале: браузер читает индекс, показывает полную длительность и играет, пока не кончатся данные.

Так что если длинный ролик не работает, а короткий работает, сравните декодированный размер с исходным, прежде чем винить кодек.

Как разобрать боксы на Python

Структура боксов достаточно проста, чтобы обойти её без библиотек: четыре байта размера, четыре байта типа, затем содержимое. Этот скрипт выводит боксы верхнего уровня и бренды:

import base64, struct

def mp4_boxes(data):
    pos = 0
    while pos + 8 <= len(data):
        size, kind = struct.unpack(">I4s", data[pos:pos + 8])
        if size == 1:
            size = struct.unpack(">Q", data[pos + 8:pos + 16])[0]
        elif size == 0:
            size = len(data) - pos
        yield kind.decode("latin-1"), pos, size
        if size < 8:
            break
        pos += size

with open("clip.b64") as f:
    data = base64.b64decode(f.read())

for kind, pos, size in mp4_boxes(data):
    print(kind, pos, size)
    if kind == "ftyp":
        body = data[pos + 8:pos + size]
        brands = [body[i:i + 4].decode("latin-1") for i in range(8, len(body), 4)]
        print("  major:", body[:4].decode("latin-1"), "compatible:", brands)

Для ролика H.264, созданного ffmpeg, он выведет ftyp 0 32 с основным брендом isom, затем free, mdat и последним moov. moov перед mdat означает faststart; боксы moof означают фрагментированный MP4, какой делают для стриминга и какой используется в примере на этой странице. Если moov в списке нет, файл неполный.

Поддержка кодеков в разных браузерах описана на странице Base64 в видео. Закодировать ролик поможет MP4 в Base64, а о декодировании больших данных написано в статье Base64 в Python.

Вопросы и ответы

Как превратить Base64 в файл MP4?

Вставьте строку в поле выше, проверьте ролик в плеере и нажмите Скачать файл. Видео сохранится как decoded.mp4, байт в байт таким, каким его закодировали.

Почему браузер пишет, что не может воспроизвести MP4, хотя это MP4?

Либо внутри кодек, которого нет в вашем браузере, чаще всего HEVC, либо файл неполный и в нём нет индекса. ffprobe на скачанном файле различит эти случаи: он назовёт кодек или сообщит, что атом moov не найден.

Сохранять ли MOV как .mp4?

Лучше нажать Скачать как .mov: это расширение совпадает с содержимым. У MOV и MP4 во многом общая структура, поэтому переименование на практике часто срабатывает, но некоторые плееры проверяют бренд и отказываются открывать файл, если он не совпадает.