Comment convertir un MP4 en Base64
- Déposez un fichier
.mp4dans la zone ou choisissez-le avec le sélecteur de fichiers. - Lancez-le dans l’aperçu. S’il ne se lit pas ici, il ne se lira probablement pas non plus depuis une data URI dans ce navigateur.
- Laissez Sortie en sur Data URI pour les balises
<video>, ou choisissez Base64 brut ou JSON pour les API. - Copier la sortie, ou Enregistrer en .txt pour les gros fichiers.
Longueur encodée selon le débit
La taille d’un MP4 vaut à peu près débit × durée. Pour un clip de 10 secondes :
| Débit total | Taille du fichier | Longueur Base64 |
|---|---|---|
| 0,5 Mbit/s | 625 000 octets | 833 336 car. |
| 1 Mbit/s | 1 250 000 octets | 1 666 668 car. |
| 2,5 Mbit/s | 3 125 000 octets | 4 166 668 car. |
| 5 Mbit/s | 6 250 000 octets | 8 333 336 car. |
Les enregistrements de téléphone tournent souvent à 10 Mbit/s ou plus : dix secondes de vidéo de téléphone non retouchée produisent déjà plus de 16 millions de caractères. Réencodez d’abord à une résolution et un débit plus faibles ; Vidéo en Base64 propose une commande ffmpeg testée pour cela.
La marque ftyp dans les premiers caractères
La première boîte d’un MP4 déclare une marque principale (major brand), qui indique aux lecteurs la spécification suivie par le fichier. Elle est visible dans le Base64 :
| Marque | Signification | Base64 (boîte ftyp de 32 octets) |
|---|---|---|
isom | fichier média de base ISO, la marque générique (par défaut dans ffmpeg) | AAAAIGZ0eXBpc29t |
mp42 | MP4 version 2 | AAAAIGZ0eXBtcDQy |
M4V | variante vidéo MP4 d’Apple | AAAAIGZ0eXBNNFYg |
qt | film QuickTime (.mov) | AAAAIGZ0eXBxdCAg |
Le cinquième caractère varie avec la taille de la boîte (G pour 24 octets, H pour 28, I pour 32) : le code de détection doit donc chercher GZ0eXB après les cinq premiers caractères. Un fichier de marque qt est en réalité un film QuickTime nommé .mp4 ; il peut quand même se lire, mais étiquetez-le video/quicktime si le destinataire vérifie.
Intégrer et envoyer
Une courte boucle muette dans une page HTML autonome :
<video autoplay muted loop playsinline src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21p..."></video>
Envoyer un clip dans une requête JSON depuis 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"),
});
Les noms de champs sont ici des exemples ; utilisez ceux de la documentation de votre API. Plus de détails dans Base64 en Node.js.
Problèmes possibles
- La data URI se lit dans Safari mais pas dans Chrome ou Firefox. La piste vidéo est probablement en HEVC. Réencodez en H.264.
- La page se fige au chargement. Le navigateur analyse une chaîne énorme. Au-delà de quelques mégaoctets, mieux vaut remplacer les data URI par une URL de fichier ou une URL Blob.
- Le destinataire dit que le fichier est corrompu. Comparez la longueur décodée avec la taille du fichier d’origine dans le compteur ; une chaîne tronquée coupe la fin du fichier, là où beaucoup de MP4 gardent leur index. Base64 en MP4 indique si le clip décodé se lit.
FAQ
Pourquoi le Base64 de mon MP4 commence-t-il par AAAA ?
Un MP4 s’ouvre sur la taille de sa première boîte, ftyp, écrite sur 4 octets. Pour tout en-tête normal, les trois premiers octets sont nuls, et les octets nuls s’encodent en A. Viennent ensuite le nom de boîte ftyp et la marque, par ex. AAAAIGZ0eXBpc29t pour la marque isom.
Mon MP4 sera-t-il lu depuis une data URI dans tous les navigateurs ?
S’il utilise de la vidéo H.264 et de l’audio AAC, oui. Les fichiers MP4 en HEVC (H.265) sont lus dans Safari et seulement dans certains autres navigateurs, selon le système. Le conteneur seul ne garantit pas la lecture.
Comment envoyer un MP4 en Base64 à une API ?
Choisissez Base64 brut, sauf si l’API documente une data URI, et envoyez video/mp4 comme type de média. Comparez la limite de taille de l’API avec la longueur encodée, qui est un tiers plus grande que le fichier.