So dekodieren Sie Base64 in MP4
- Fügen Sie das Base64 in Base64 oder Data-URI ein. Ein Präfix
data:video/mp4;base64,darf stehen bleiben. Für lange Zeichenketten nutzen Sie .txt-Datei öffnen; alles über 4 MB wird dekodiert, ohne im Textfeld angezeigt zu werden. - Der Player lädt den Clip. Dauer und Abmessungen erscheinen, wenn der Browser den Index gelesen hat, beim Beispiel etwa
0:02.0und96 × 64 px. - Sehen Sie sich den Hinweisbereich an: Bei einem echten MP4 bleibt er leer, sonst nennt er das Format.
- Drücken Sie Datei herunterladen.
Dekodieren und Wiedergabe bleiben in Ihrem Browser; die Seite darf außer dem Seitenaufrufzähler von Cloudflare keine Netzwerkanfragen stellen.
MP4, MOV, M4A: eine Struktur, mehrere Formate
MP4-Dateien bestehen aus Boxen, und die erste Box, ftyp, enthält eine Kennung (Brand), die angibt, welcher Variante des Formats die Datei folgt. Das Tool liest diese Kennung:
Kennung in ftyp | Erkannt als | Hinweis auf dieser Seite |
|---|---|---|
isom, mp41, mp42, avc1, iso6 und die meisten anderen | MP4 | Keiner |
qt | MOV (QuickTime) | „Erkannt: MOV, erwartet: MP4.“ mit Als .mov herunterladen |
M4A | M4A | „Erkannt: M4A, erwartet: MP4.“: nur Audio |
3gp4, 3gp5 und andere 3g-Kennungen | 3GP, altes Handyvideo | „Erkannt: 3GP, erwartet: MP4.“ |
heic, mif1, avif | HEIC, AVIF | „Erkannt: HEIC, erwartet: MP4.“: Standbilder in derselben Boxstruktur |
Ein Clip, dessen Kennung MP4 lautet, kann trotzdem nur Ton enthalten. Er wird abgespielt, und Abmessungen zeigt nur Audio. Eine als „MP4“ verschickte WebM-Datei wird als „Erkannt: WebM, erwartet: MP4.“ gemeldet.
Wo der Index steht und warum das bei kaputten Dateien zählt
Jedes MP4 hat eine moov-Box, den Index, der dem Player sagt, wo jeder Frame liegt. Viele Encoder, darunter ffmpeg, schreiben ihn standardmäßig ans Ende der Datei, hinter die Mediendaten in mdat. Mit -movflags +faststart verschiebt ffmpeg ihn nach vorn, damit das Streaming beginnen kann, bevor die ganze Datei angekommen ist.
Auf dieser Seite liegt die ganze Datei im Speicher, bei einem vollständigen Clip spielt die Position also keine Rolle. Sie zählt, wenn das Base64 abgeschnitten wurde, durch ein Größenlimit in einem Log, einer Datenbankspalte oder einer Message Queue:
- Index am Ende: Der Schnitt entfernt den Index, und nichts lässt sich abspielen. Das Tool meldet trotzdem MP4, weil die ersten Bytes intakt sind, und der Player meldet, dass er die Datei nicht abspielen kann, mit Dauer „k. A.“.
- Index am Anfang: Der Browser liest den Index, zeigt die volle Dauer und spielt, bis die Daten ausgehen.
Scheitert also ein langer Clip, während ein kurzer funktioniert, vergleichen Sie die dekodierte Größe mit dem Original, bevor Sie dem Codec die Schuld geben.
Die Boxen in Python untersuchen
Die Boxstruktur ist einfach genug, um sie ohne Bibliothek zu durchlaufen: vier Bytes Größe, vier Bytes Typ, dann der Inhalt. Dieses Skript listet die Boxen der obersten Ebene und die Kennungen auf:
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)
Für einen mit ffmpeg erstellten H.264-Clip gibt es ftyp 0 32 mit der Hauptkennung isom aus, dann free, mdat und zuletzt moov. Steht moov vor mdat, bedeutet das Faststart; moof-Boxen bedeuten ein fragmentiertes MP4, wie es für Streaming erzeugt wird und wie das Beispiel auf dieser Seite. Fehlt moov in der Liste, ist die Datei unvollständig.
Zur Codec-Unterstützung in den Browsern siehe Base64 in Video. Um einen Clip zu kodieren, nutzen Sie MP4 in Base64; Base64 in Python behandelt das Dekodieren großer Eingaben.
Häufige Fragen
Wie wandle ich Base64 in eine MP4-Datei um?
Fügen Sie die Zeichenkette oben ein, prüfen Sie den Clip im Player und drücken Sie Datei herunterladen. Das Video wird als decoded.mp4 gespeichert, Byte für Byte so, wie es kodiert wurde.
Warum meldet mein MP4, dass es sich nicht abspielen lässt, obwohl es ein MP4 ist?
Entweder fehlt Ihrem Browser der enthaltene Codec, meist HEVC, oder die Datei ist unvollständig und ihr Index fehlt. ffprobe auf der heruntergeladenen Datei unterscheidet beides: Es nennt den Codec oder meldet, dass das moov-Atom nicht gefunden wurde.
Soll ich ein MOV als .mp4 speichern?
Nutzen Sie Als .mov herunterladen, die Endung, die zum Inhalt passt. MOV und MP4 teilen den größten Teil ihrer Struktur, Umbenennen funktioniert in der Praxis also oft, manche Player prüfen aber die Kennung und lehnen eine Abweichung ab.