Enviar um arquivo
  1. base64hub
  2. Ferramentas de arquivo
  3. Base64 para MP4

Base64 para MP4

Cole um MP4 codificado em Base64 para assistir nesta página e salvar como arquivo .mp4. Se o clipe for, na verdade, um MOV, um M4A ou um download cortado, a ferramenta avisa.

Grátis sem cadastro, sem limites Local nada é enviado Detecta MP4, MOV, M4A e 3GP pela marca Atualizado 27 de out. de 2026
Entrada –Saída –Tamanho –

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar Base64 para MP4

  1. Cole o Base64 em Base64 ou data URI. Um prefixo data:video/mp4;base64, pode ficar. Para strings longas, use Abrir arquivo .txt; acima de 4 MB, o conteúdo é decodificado sem ser exibido na área de texto.
  2. O player carrega o clipe. Duração e Dimensões aparecem quando o navegador lê o índice, por exemplo 0:02.0 e 96 × 64 px no exemplo.
  3. Olhe a área de avisos: ela fica vazia para um MP4 de verdade e informa o formato nos outros casos.
  4. Clique em Baixar arquivo.

A decodificação e a reprodução ficam dentro do seu navegador; a página não pode fazer requisições de rede, exceto as do contador de visitas da Cloudflare.

MP4, MOV, M4A: uma estrutura, vários formatos

Arquivos MP4 são feitos de caixas (boxes), e a primeira, ftyp, guarda uma marca que diz qual variante do formato o arquivo segue. A ferramenta lê essa marca:

Marca no ftypDetectado comoAviso nesta página
isom, mp41, mp42, avc1, iso6 e a maioria das outrasMP4Nenhum
qtMOV (QuickTime)“Isto parece ser MOV, não MP4.” com Baixar como .mov
M4AM4A“Isto parece ser M4A, não MP4.”: só áudio
3gp4, 3gp5 e outras marcas 3g3GP, vídeo de celulares antigos“Isto parece ser 3GP, não MP4.”
heic, mif1, avifHEIC, AVIF“Isto parece ser HEIC, não MP4.”: imagens estáticas na mesma estrutura de caixas

Um clipe cuja marca diz MP4 ainda pode conter só som. Ele toca, e Dimensões mostra só áudio. Um arquivo WebM enviado como “MP4” aparece como “Isto parece ser WebM, não MP4.”

Onde fica o índice, e por que isso importa em arquivos quebrados

Todo MP4 tem uma caixa moov, o índice que diz ao player onde está cada quadro. Muitos encoders, o ffmpeg entre eles, gravam esse índice no final do arquivo por padrão, depois dos dados de mídia em mdat. Com -movflags +faststart, o ffmpeg o move para o início, para que o streaming comece antes de o arquivo inteiro chegar.

Nesta página o arquivo inteiro fica na memória, então a posição não importa para um clipe completo. Ela importa quando o Base64 foi truncado por um limite de tamanho em um log, numa coluna de banco de dados ou numa fila de mensagens:

  • Índice no final: o corte remove o índice e nada toca. A ferramenta ainda diz MP4, porque os primeiros bytes estão intactos, e o player avisa que não consegue reproduzir, com Duração n/d.
  • Índice no início: o navegador lê o índice, mostra a duração completa e toca até os dados acabarem.

Então, quando um clipe longo falha e um curto funciona, compare o tamanho decodificado com o original antes de culpar o codec.

Inspecionar as caixas em Python

A estrutura das caixas é simples o bastante para percorrer sem biblioteca: quatro bytes de tamanho, quatro bytes de tipo e depois o conteúdo. Isto lista as caixas de nível superior e as marcas:

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)

Para um clipe H.264 gerado pelo ffmpeg, o script imprime ftyp 0 32 com a marca principal isom, depois free, mdat e, por último, moov. Um moov antes de mdat indica faststart; caixas moof indicam um MP4 fragmentado, como os gerados para streaming e como o exemplo desta página. Se moov não estiver na lista, o arquivo está incompleto.

Para o suporte a codecs nos navegadores, veja Base64 para vídeo. Para codificar um clipe, use MP4 para Base64; Base64 em Python trata da decodificação de entradas grandes.

Perguntas frequentes

Como converter Base64 em arquivo MP4?

Cole a string acima, confira o clipe no player e clique em Baixar arquivo. O vídeo é salvo como decoded.mp4, byte a byte como foi codificado.

Por que meu MP4 aparece como impossível de reproduzir, mesmo sendo MP4?

Ou o codec que está dentro é um que o seu navegador não tem, na maioria das vezes HEVC, ou o arquivo está incompleto e falta o índice. O ffprobe no arquivo baixado diferencia os dois casos: ele informa o codec ou avisa que o átomo moov não foi encontrado.

Devo salvar um MOV como .mp4?

Use Baixar como .mov, a extensão que corresponde ao conteúdo. MOV e MP4 compartilham a maior parte da estrutura, então renomear muitas vezes funciona na prática, mas alguns players conferem a marca e recusam quando ela não bate.