Cómo convertir MP4 a Base64
- Suelta un archivo
.mp4en el recuadro o elígelo con el selector de archivos. - Reprodúcelo en la vista previa. Si aquí no se reproduce, probablemente tampoco lo hará desde un data URI en este navegador.
- Deja Salida como en Data URI para etiquetas
<video>, o elige Base64 simple o JSON para API. - Copiar salida, o Guardar como .txt para archivos grandes.
Longitud codificada según el bitrate
El tamaño de un MP4 es aproximadamente bitrate × duración. Para un clip de 10 segundos:
| Bitrate total | Tamaño del archivo | Longitud en 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 |
Las grabaciones de teléfono suelen ir a 10 Mbps o más, así que diez segundos de vídeo de teléfono sin tocar ya producen más de 16 millones de caracteres. Recodifica antes con menor resolución y bitrate; Vídeo a Base64 tiene un comando ffmpeg probado para eso.
La marca ftyp en los primeros caracteres
La primera caja de un MP4 declara una marca principal (major brand), que indica a los reproductores qué especificación sigue el archivo. Se ve en el Base64:
| Marca | Significado | Base64 (caja ftyp de 32 bytes) |
|---|---|---|
isom | archivo multimedia base ISO, la marca genérica (la predeterminada de ffmpeg) | AAAAIGZ0eXBpc29t |
mp42 | MP4 versión 2 | AAAAIGZ0eXBtcDQy |
M4V | la variante de vídeo MP4 de Apple | AAAAIGZ0eXBNNFYg |
qt | película QuickTime (.mov) | AAAAIGZ0eXBxdCAg |
El quinto carácter cambia con el tamaño de la caja (G para 24 bytes, H para 28, I para 32), así que el código de detección debe buscar GZ0eXB después de los cinco primeros caracteres. Un archivo con la marca qt es en realidad una película QuickTime con nombre .mp4; puede que se reproduzca igualmente, pero etiquétalo como video/quicktime si el receptor lo comprueba.
Incrustar y enviar
Un bucle corto sin sonido en una página HTML autocontenida:
<video autoplay muted loop playsinline src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21p..."></video>
Enviar un clip en una petición JSON desde 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"),
});
Los nombres de campo son de ejemplo; usa los de la documentación de tu API. Más en Base64 en Node.js.
Problemas con los que te puedes encontrar
- El data URI se reproduce en Safari pero no en Chrome ni en Firefox. Probablemente la pista de vídeo es HEVC. Recodifícala a H.264.
- La página se congela al cargar. El navegador está analizando una cadena enorme. Los data URI de más de unos pocos megabytes conviene sustituirlos por una URL de archivo o una URL de Blob.
- El receptor dice que el archivo está dañado. Compara la longitud decodificada con el tamaño original del archivo en el indicador; una cadena truncada corta el final del archivo, donde muchos MP4 guardan su índice. Base64 a MP4 muestra si el clip decodificado se reproduce.
Preguntas frecuentes
¿Por qué el Base64 de mi MP4 empieza por AAAA?
Un MP4 empieza con el tamaño de su primera caja, ftyp, como número de 4 bytes. En cualquier cabecera normal, los tres primeros bytes son cero, y los bytes cero se codifican como A. Después vienen el nombre de la caja ftyp y la marca, p. ej. AAAAIGZ0eXBpc29t para la marca isom.
¿Mi MP4 se reproducirá desde un data URI en todos los navegadores?
Si usa vídeo H.264 y audio AAC, sí. Los MP4 con HEVC (H.265) se reproducen en Safari y solo en algunos otros navegadores, según el sistema. El contenedor por sí solo no garantiza la reproducción.
¿Cómo envío un MP4 a una API en Base64?
Elige Base64 simple salvo que la API indique un data URI, y envía video/mp4 como tipo de medio. Compara el límite de tamaño de la API con la longitud codificada, que es un tercio mayor que el archivo.