So wandeln Sie MP4 in Base64 um
- Legen Sie eine
.mp4-Datei auf dem Feld ab oder wählen Sie sie über die Dateiauswahl. - Spielen Sie sie in der Vorschau ab. Läuft sie hier nicht, läuft sie in diesem Browser vermutlich auch nicht aus einer Data-URI.
- Lassen Sie Ausgabe als für
<video>-Tags auf Data-URI, oder wählen Sie für APIs Reines Base64 oder JSON. - Ausgabe kopieren, oder bei großen Dateien Als .txt speichern.
Kodierte Länge je Bitrate
Die Größe einer MP4 ist ungefähr Bitrate × Dauer. Für einen Clip von 10 Sekunden:
| Gesamtbitrate | Dateigröße | Base64-Länge |
|---|---|---|
| 0,5 Mbit/s | 625.000 Bytes | 833.336 Zeichen |
| 1 Mbit/s | 1.250.000 Bytes | 1.666.668 Zeichen |
| 2,5 Mbit/s | 3.125.000 Bytes | 4.166.668 Zeichen |
| 5 Mbit/s | 6.250.000 Bytes | 8.333.336 Zeichen |
Handyaufnahmen laufen oft mit 10 Mbit/s oder mehr, schon zehn Sekunden unbearbeitetes Handyvideo ergeben also mehr als 16 Millionen Zeichen. Kodieren Sie vorher mit niedrigerer Auflösung und Bitrate neu; Video in Base64 enthält dafür einen getesteten ffmpeg-Befehl.
Die ftyp-Brand in den ersten Zeichen
Die erste Box einer MP4 deklariert eine Haupt-Brand, die Playern sagt, welcher Spezifikation die Datei folgt. Sie ist im Base64 sichtbar:
| Brand | Bedeutung | Base64 (32-Byte-ftyp-Box) |
|---|---|---|
isom | ISO Base Media File, die generische Brand (Standard bei ffmpeg) | AAAAIGZ0eXBpc29t |
mp42 | MP4 Version 2 | AAAAIGZ0eXBtcDQy |
M4V | Apples MP4-Videovariante | AAAAIGZ0eXBNNFYg |
qt | QuickTime-Film (.mov) | AAAAIGZ0eXBxdCAg |
Das fünfte Zeichen ändert sich mit der Boxgröße (G für 24 Bytes, H für 28, I für 32), Erkennungscode sollte also nach den ersten fünf Zeichen nach GZ0eXB suchen. Eine Datei mit der Brand qt ist in Wirklichkeit ein QuickTime-Film mit .mp4-Namen; sie läuft womöglich trotzdem, kennzeichnen Sie sie aber als video/quicktime, wenn der Empfänger das prüft.
Einbetten und senden
Eine kurze, stumme Schleife in einer in sich geschlossenen HTML-Seite:
<video autoplay muted loop playsinline src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21p..."></video>
Einen Clip aus Node.js in einem JSON-Request senden:
import { readFile } from "node:fs/promises";
const video = await readFile("clip.mp4");
const body = JSON.stringify({
mimeType: "video/mp4",
data: video.toString("base64"),
});
Die Feldnamen sind Platzhalter; verwenden Sie die aus der Dokumentation Ihrer API. Mehr unter Base64 in Node.js.
Probleme, auf die Sie stoßen können
- Die Data-URI läuft in Safari, aber nicht in Chrome oder Firefox. Die Videospur ist vermutlich HEVC. Kodieren Sie nach H.264 um.
- Die Seite friert beim Laden ein. Der Browser parst eine riesige Zeichenkette. Data-URIs über einige Megabyte ersetzen Sie besser durch eine Datei-URL oder eine Blob-URL.
- Der Empfänger meldet eine beschädigte Datei. Vergleichen Sie die dekodierte Länge mit der ursprünglichen Dateigröße in der Anzeige; eine abgeschnittene Zeichenkette kappt das Ende der Datei, wo viele MP4s ihren Index ablegen. Base64 in MP4 zeigt, ob der dekodierte Clip abspielbar ist.
Häufige Fragen
Warum beginnt das Base64 meiner MP4 mit AAAA?
Eine MP4 beginnt mit der Größe ihrer ersten Box, ftyp, als 4-Byte-Zahl. Bei jedem normalen Header sind die ersten drei Bytes null, und Null-Bytes werden zu A kodiert. Danach folgen der Boxname ftyp und die Brand, z. B. AAAAIGZ0eXBpc29t für die Brand isom.
Spielt meine MP4 aus einer Data-URI in jedem Browser?
Wenn sie H.264-Video und AAC-Audio verwendet, ja. MP4-Dateien mit HEVC (H.265) laufen in Safari und je nach System nur in manchen anderen Browsern. Der Container allein garantiert keine Wiedergabe.
Wie sende ich eine MP4 als Base64 an eine API?
Wählen Sie Reines Base64, sofern die API keine Data-URI dokumentiert, und senden Sie video/mp4 als Medientyp. Vergleichen Sie das Größenlimit der API mit der kodierten Länge, die ein Drittel über der Dateigröße liegt.