What is 3GP?
3GP is the multimedia container that 3GPP defines as an instance of the ISO Base Media File Format (MPEG-4 Part 12), created for 3G mobile messaging and streaming. A 3GP file can carry H.263, H.264, or H.265 video, AMR-family or AAC audio, and timed text.
How 3GP works
A 3GP file stores timed media tracks in the box structure of the ISO Base Media File Format, the same family as MP4. Its file-type box carries four-character brands that name the 3GPP release and profile the file conforms to, for example 3gp4 for a Release 4 file or 3gr6 for a Release 6 progressive-download file. The current specification registers H.263, H.264, and H.265 video; AMR, AMR-WB, AMR-WB+, EVS, IVAS, Enhanced aacPlus, and AAC audio; and timed text. MPEG-4 Part 2 video is no longer in that list (the change history records its removal in Release 16), although older files can still contain it. Decoding requirements come from the codecs inside, not from the container, so an ingest system should probe each track before deciding whether remuxing is enough or transcoding is required.
Key facts
- 1
video/3gppdoes not prove that a video track exists: the registration makes it valid for every 3GP file, including audio-only ones.audio/3gppis the stricter label, reserved for files with no visual material, and timed text counts as visual. Probe the tracks before routing a file as audio or video. - 2No magic number is registered for 3GP. A conforming file starts with a file-type box that lists a 3GPP brand, such as
3gp4or3gp6, among its compatible brands, and readers are told to check that list instead of relying on the major brand. FFmpeg prints these values asmajor_brandandcompatible_brandswhen it opens a file. One file can carry both 3GP and MP4 brands, so a.3gpor.mp4suffix alone does not settle which rules it follows. - 33G2 is the 3GPP2 counterpart, not an alias for 3GP. It has separate registrations (
video/3gpp2andaudio/3gpp2, usual suffix.3g2), must list a 3GPP2 brand, and may contain 13K vocoder or EVRC speech, which the 3GP specification does not register. The MP4 Registration Authority registers3g2aas a 3GPP2 brand, and FFmpeg 8.0’s 3G2 muxer writes3g2a, or3g2bwhen a track is H.264. Both belong to the ISO file family, so one parser can read either (FFmpeg uses a single demuxer for both), but the decoders required can differ. - 4When stream-copying a 3GP file into MP4 with FFmpeg, the MP4 muxer accepts H.264, H.265, MPEG-4 Part 2, and AAC tracks but has no sample-entry tag for H.263, AMR, or AMR-WB, and stops with a “codec not currently supported in container” error. Those tracks must be re-encoded for MP4 output. This covers only the codecs named and describes FFmpeg’s muxer tables as checked in release 8.0, not every packaging tool. A tag is necessary for a copy, not a guarantee of one, and a copied track is not thereby playable in a browser.
When 3GP matters
Keep 3GP ingest for recordings from older phones and legacy mobile messaging archives. For web delivery, convert to MP4 with H.264 video and AAC audio, which MDN lists as supported in MP4 by Chrome, Edge, Firefox, and Safari (Firefox relies on the operating system’s decoders). Do not serve the 3GP file itself: MDN’s container format index names only Firefox for Android as supporting 3GP, and MDN’s codec guides report that no major browser has shipped H.263 decoding and mark AMR as unsupported in Chrome and Firefox. Copying a track into MP4 does not make it playable either: re-encode MPEG-4 Part 2 video, which MDN lists as unsupported in Chrome, Edge, Opera, and Safari, and check H.265 against your target browsers, because MDN ties its support to browser version, operating system, and hardware. Keep the original as well, because AMR narrowband is 8 kHz speech audio and re-encoding it adds compatibility, not fidelity.
How Transloadit helps with 3GP
Transloadit’s audio/video formats table, which covers FFmpeg-based Robots such as /video/encode, lists 3gp and 3g2 as formats those Robots can write. Both rows show Read as No because each row is the FFmpeg muxer of that name, and FFmpeg reads these files through a separate, shared demuxer. As the FFmpeg formats documentation describes, that one demuxer handles the whole MOV, MP4, and 3GP family, and FFmpeg reports it under the combined name mov,mp4,m4a,3gp,3g2,mj2, which includes both 3gp and 3g2, when it opens such a file.
The table reports what each FFmpeg stack version can read and write, not a tested result for every codec inside a 3GP upload. The stream-copy behavior in the key facts was checked in FFmpeg 8.0’s source, not on a Transloadit stack. Run a representative legacy file through your Assembly before depending on it.
Explore Transloadit’s file formats & compression capabilities
Sources
- ETSI TS 126 244 V19.1.0 (3GPP TS 26.244): 3GPP file format (3GP)
- RFC 3839: MIME Type Registrations for 3GPP Multimedia files
- RFC 4393: MIME Type Registrations for 3GPP2 Multimedia Files
- RFC 4867: AMR and AMR-WB payload and file storage format (codec sampling rates)
- MP4 Registration Authority: registered brands (3GPP and 3GPP2 brand codes)
- FFmpeg Formats Documentation: mov/mp4/3gp demuxer and ISOBMFF muxers
- FFmpeg 8.0 movenc.c, lines 8749–8821: codec tag tables for the 3GP and MP4 muxers
- FFmpeg 8.0 movenc.c, lines 5934–5973: file-type brands written by the 3GP and 3G2 muxers
- FFmpeg ticket #10864: AMR-NB stream copy into MP4 and 3GP fails (reported on FFmpeg 4.4.4 and 6.1.1)
- MDN: Media container formats (3GP browser support; codecs supported in MP4)
- MDN: Web video codec guide (H.263, MPEG-4 Part 2, and H.265 browser support)
- MDN: Web audio codec guide (AMR browser support)