Was ist 3GP?
3GP ist der Multimedia-Container, den 3GPP als Ausprägung des ISO Base Media File Format (MPEG-4 Teil 12) definiert und für mobiles Messaging und Streaming über 3G entwickelt hat. Eine 3GP-Datei kann Video in H.263, H.264 oder H.265, Audio aus der AMR-Familie oder in AAC sowie zeitgesteuerten Text enthalten.
So funktioniert 3GP
Eine 3GP-Datei speichert zeitbezogene Medienspuren in der Box-Struktur des ISO Base Media File Format und gehört damit zur selben Familie wie MP4. Ihre Dateityp-Box enthält Brand-Kennungen aus vier Zeichen, die das 3GPP-Release und das Profil angeben, denen die Datei entspricht, etwa 3gp4 für eine Datei nach Release 4 oder 3gr6 für eine Datei zum progressiven Download nach Release 6. Die aktuelle Spezifikation registriert Video in H.263, H.264 und H.265; Audio in AMR, AMR-WB, AMR-WB+, EVS, IVAS, Enhanced aacPlus und AAC; sowie zeitgesteuerten Text. Video in MPEG-4 Teil 2 steht nicht mehr auf dieser Liste (der Änderungsverlauf dokumentiert die Entfernung in Release 16), kann aber weiterhin in älteren Dateien enthalten sein. Die Anforderungen beim Decodieren ergeben sich aus den enthaltenen Codecs, nicht aus dem Container. Ein Importsystem sollte daher jede Spur analysieren, bevor es entscheidet, ob Remuxing ausreicht oder Transkodierung erforderlich ist.
Wichtige Fakten
video/3gppbelegt nicht, dass eine Videospur vorhanden ist: Laut Registrierung gilt diese Kennzeichnung für jede 3GP-Datei, auch für reine Audiodateien.audio/3gppist die strengere Kennzeichnung, die Dateien ohne visuelles Material vorbehalten ist. Zeitgesteuerter Text zählt dabei als visuell. Analysieren Sie die Spuren, bevor Sie eine Datei als Audio oder Video weiterleiten.- Für 3GP ist keine magische Zahl registriert. Eine konforme Datei beginnt mit einer Dateityp-Box, die unter ihren kompatiblen Brand-Kennungen eine 3GPP-Kennung wie
3gp4oder3gp6aufführt. Leseprogrammen wird vorgegeben, diese Liste zu prüfen, statt sich auf die Hauptkennung zu verlassen. FFmpeg gibt diese Werte beim Öffnen einer Datei alsmajor_brandundcompatible_brandsaus. Eine Datei kann sowohl 3GP- als auch MP4-Kennungen enthalten. Die Endung.3gpoder.mp4allein klärt daher nicht, welchen Regeln sie folgt. - 3G2 ist das 3GPP2-Gegenstück, kein Alias für 3GP. Es hat eigene Registrierungen (
video/3gpp2undaudio/3gpp2, übliche Endung.3g2), muss eine 3GPP2-Brand-Kennung aufführen und darf Sprache enthalten, die mit dem Vocoder 13K oder mit EVRC codiert wurde. Die 3GP-Spezifikation registriert diese nicht. Die MP4 Registration Authority registriert3g2aals 3GPP2-Brand-Kennung. Der 3G2-Muxer von FFmpeg 8.0 schreibt3g2aoder bei einer Spur in H.264 die Kennung3g2b. Beide gehören zur ISO-Dateifamilie, sodass ein Parser beide lesen kann (FFmpeg verwendet für beide denselben Demuxer). Die erforderlichen Decoder können sich jedoch unterscheiden. - Beim Kopieren der Streams einer 3GP-Datei in MP4 mit FFmpeg akzeptiert der MP4-Muxer Spuren in H.264, H.265, MPEG-4 Teil 2 und AAC. Für H.263, AMR oder AMR-WB hat er jedoch kein Sample-Entry-Tag und bricht mit der Fehlermeldung „codec not currently supported in container“ ab. Diese Spuren müssen für die MP4-Ausgabe neu codiert werden. Dies gilt nur für die genannten Codecs und beschreibt die Muxer-Tabellen von FFmpeg, wie sie in Release 8.0 geprüft wurden, nicht jedes Packaging-Tool. Ein Tag ist für das Kopieren erforderlich, garantiert es aber nicht. Eine kopierte Spur ist dadurch auch nicht automatisch im Browser abspielbar.
Wann 3GP relevant ist
Behalten Sie den 3GP-Import für Aufnahmen älterer Mobiltelefone und Archive älterer mobiler Nachrichten bei. Konvertieren Sie für die Auslieferung im Web in MP4 mit Video in H.264 und Audio in AAC. MDN führt diese Kombination in MP4 als unterstützt in Chrome, Edge, Firefox und Safari auf (Firefox nutzt die Decoder des Betriebssystems). Liefern Sie die 3GP-Datei selbst nicht aus: Der Containerformat-Index von MDN nennt nur Firefox für Android als Browser mit 3GP-Unterstützung. Die Codec-Leitfäden von MDN berichten, dass kein großer Browser jemals einen Decoder für H.263 ausgeliefert hat, und kennzeichnen AMR in Chrome und Firefox als nicht unterstützt. Auch das Kopieren einer Spur in MP4 macht sie nicht abspielbar: Codieren Sie Video in MPEG-4 Teil 2 neu, das MDN in Chrome, Edge, Opera und Safari als nicht unterstützt aufführt, und prüfen Sie H.265 für Ihre Zielbrowser, da MDN dessen Unterstützung an Browserversion, Betriebssystem und Hardware knüpft. Bewahren Sie auch das Original auf, denn AMR-Schmalbandaudio ist Sprachaudio mit 8 kHz, und erneutes Codieren verbessert die Kompatibilität, nicht die Wiedergabetreue.
So hilft Transloadit bei 3GP
Transloadits Tabelle der Audio- und Videoformate, die FFmpeg-basierte Robots wie /video/encode abdeckt, führt 3gp und 3g2 als Formate auf, die diese Robots schreiben können. In beiden Zeilen steht unter „Lesen“ der Wert „Nein“, weil jede Zeile den gleichnamigen FFmpeg-Muxer beschreibt und FFmpeg diese Dateien über einen separaten, gemeinsamen Demuxer liest. Wie die FFmpeg-Formatdokumentation beschreibt, verarbeitet dieser eine Demuxer die gesamte MOV-, MP4- und 3GP-Familie. Beim Öffnen einer solchen Datei meldet FFmpeg ihn unter dem kombinierten Namen mov,mp4,m4a,3gp,3g2,mj2, der sowohl 3gp als auch 3g2 umfasst.
Die Tabelle zeigt, was jede FFmpeg-Stack-Version lesen und schreiben kann, kein getestetes Ergebnis für jeden Codec in einem 3GP-Upload. Das in den wichtigsten Fakten beschriebene Verhalten beim Kopieren von Streams wurde im Quellcode von FFmpeg 8.0 geprüft, nicht auf einem Transloadit-Stack. Lassen Sie eine repräsentative ältere Datei durch Ihre Assembly laufen, bevor Sie sich darauf verlassen.
Entdecken Sie Transloadits Möglichkeiten für Dateiformate & Komprimierung
Quellen
- ETSI TS 126 244 V19.1.0 (3GPP TS 26.244): 3GPP-Dateiformat (3GP)
- RFC 3839: MIME-Typ-Registrierungen für 3GPP-Multimediadateien
- RFC 4393: MIME-Typ-Registrierungen für 3GPP2-Multimediadateien
- RFC 4867: AMR- und AMR-WB-Nutzdaten sowie Dateispeicherformat (Codec-Abtastraten)
- MP4 Registration Authority: registrierte Brand-Kennungen (3GPP- und 3GPP2-Codes)
- FFmpeg-Formatdokumentation: mov/mp4/3gp-Demuxer und ISOBMFF-Muxer
- FFmpeg 8.0 movenc.c, Zeilen 8749–8821: Codec-Tag-Tabellen für die 3GP- und MP4-Muxer
- FFmpeg 8.0 movenc.c, Zeilen 5934–5973: Dateityp-Brand-Kennungen, die die 3GP- und 3G2-Muxer schreiben
- FFmpeg-Ticket #10864: Kopieren eines AMR-NB-Streams in MP4 und 3GP schlägt fehl (gemeldet für FFmpeg 4.4.4 und 6.1.1)
- MDN: Mediencontainerformate (Browserunterstützung für 3GP; in MP4 unterstützte Codecs)
- MDN: Leitfaden zu Webvideo-Codecs (Browserunterstützung für H.263, MPEG-4 Teil 2 und H.265)
- MDN: Leitfaden zu Webaudio-Codecs (Browserunterstützung für AMR)