Como converter MP4 para Base64
- Arraste um arquivo
.mp4para a caixa ou escolha-o no seletor de arquivos. - Reproduza na prévia. Se não tocar aqui, provavelmente também não vai tocar a partir de um data URI neste navegador.
- Mantenha Saída como em Data URI para tags
<video>, ou escolha Base64 puro ou JSON para APIs. - Clique em Copiar saída, ou em Salvar como .txt para arquivos grandes.
Tamanho codificado por bitrate
O tamanho de um MP4 é mais ou menos bitrate × duração. Para um clipe de 10 segundos:
| Bitrate total | Tamanho do arquivo | Tamanho em Base64 |
|---|---|---|
| 0,5 Mbps | 625.000 bytes | 833.336 caracteres |
| 1 Mbps | 1.250.000 bytes | 1.666.668 caracteres |
| 2,5 Mbps | 3.125.000 bytes | 4.166.668 caracteres |
| 5 Mbps | 6.250.000 bytes | 8.333.336 caracteres |
Gravações de celular costumam passar de 10 Mbps, então dez segundos de vídeo de celular sem tratamento já geram mais de 16 milhões de caracteres. Recodifique antes com resolução e bitrate menores; o Vídeo para Base64 tem um comando ffmpeg testado para isso.
A marca ftyp nos primeiros caracteres
O primeiro box de um MP4 declara uma marca principal (major brand), que diz aos players qual especificação o arquivo segue. Ela aparece no Base64:
| Marca | Significado | Base64 (box ftyp de 32 bytes) |
|---|---|---|
isom | Arquivo de mídia ISO base, a marca genérica (padrão do ffmpeg) | AAAAIGZ0eXBpc29t |
mp42 | MP4 versão 2 | AAAAIGZ0eXBtcDQy |
M4V | Variante de vídeo MP4 da Apple | AAAAIGZ0eXBNNFYg |
qt | Filme QuickTime (.mov) | AAAAIGZ0eXBxdCAg |
O quinto caractere muda com o tamanho do box (G para 24 bytes, H para 28, I para 32), então o código de detecção deve procurar GZ0eXB depois dos cinco primeiros caracteres. Um arquivo com a marca qt na verdade é um filme QuickTime com nome .mp4; ele pode tocar mesmo assim, mas rotule-o como video/quicktime se o destino verificar.
Embutir e enviar
Um loop curto e sem som numa página HTML autossuficiente:
<video autoplay muted loop playsinline src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21p..."></video>
Enviar um clipe numa requisição JSON a partir do Node.js:
import { readFile } from "node:fs/promises";
const video = await readFile("clip.mp4");
const body = JSON.stringify({
mimeType: "video/mp4",
data: video.toString("base64"),
});
Os nomes de campo aqui são exemplos; use os da documentação da sua API. Mais em Base64 em Node.js.
Problemas que podem aparecer
- O data URI toca no Safari mas não no Chrome nem no Firefox. A faixa de vídeo provavelmente é HEVC. Recodifique para H.264.
- A página trava ao carregar. O navegador está processando uma string enorme. Data URIs acima de alguns megabytes ficam melhores trocados por uma URL de arquivo ou uma Blob URL.
- O destino diz que o arquivo está corrompido. Compare o tamanho decodificado com o tamanho do arquivo original no medidor; uma string truncada corta o fim do arquivo, onde muitos MP4 guardam o índice. O Base64 para MP4 mostra se o clipe decodificado toca.
Perguntas frequentes
Por que o Base64 do meu MP4 começa com AAAA?
Um MP4 abre com o tamanho do primeiro box, ftyp, como número de 4 bytes. Os três primeiros bytes são zero em qualquer cabeçalho normal, e bytes zero viram A. Em seguida vêm o nome do box ftyp e a marca, por exemplo AAAAIGZ0eXBpc29t para a marca isom.
Meu MP4 vai tocar a partir de um data URI em qualquer navegador?
Se usar vídeo H.264 e áudio AAC, vai. Arquivos MP4 com HEVC (H.265) tocam no Safari e só em alguns outros navegadores, conforme o sistema. O contêiner sozinho não garante a reprodução.
Como enviar um MP4 para uma API em Base64?
Escolha Base64 puro, a menos que a API documente um data URI, e envie video/mp4 como media type. Compare o limite de tamanho da API com o tamanho codificado, que é um terço maior que o arquivo.