O que é 3GP?
3GP é o contêiner multimídia que o 3GPP define como uma instância do ISO Base Media File Format (MPEG-4 Parte 12), criado para mensagens e streaming em redes móveis 3G. Um arquivo 3GP pode conter vídeo H.263, H.264 ou H.265, áudio da família AMR ou AAC e texto temporizado.
Como o 3GP funciona
Um arquivo 3GP armazena faixas de mídia temporizadas na estrutura de caixas do ISO Base Media File Format, a mesma família do MP4. Sua caixa de tipo de arquivo contém códigos de marca de quatro caracteres que identificam a versão e o perfil do 3GPP com os quais o arquivo está em conformidade, por exemplo, 3gp4 para um arquivo da versão 4 ou 3gr6 para um arquivo de download progressivo da versão 6. A especificação atual registra vídeo H.263, H.264 e H.265; áudio AMR, AMR-WB, AMR-WB+, EVS, IVAS, Enhanced aacPlus e AAC; e texto temporizado. O vídeo MPEG-4 Parte 2 já não consta nessa lista (o histórico de alterações registra sua remoção na versão 16), embora arquivos mais antigos ainda possam contê-lo. Os requisitos de decodificação vêm dos codecs contidos no arquivo, não do contêiner, portanto um sistema de ingestão deve analisar cada faixa antes de decidir se basta remultiplexar ou se é necessário transcodificar.
Informações essenciais
video/3gppnão comprova a existência de uma faixa de vídeo: o registro o torna válido para qualquer arquivo 3GP, inclusive os que contêm apenas áudio.audio/3gppé o rótulo mais restritivo, reservado a arquivos sem material visual, e texto temporizado conta como material visual. Analise as faixas antes de encaminhar um arquivo como áudio ou vídeo.- Nenhum número mágico está registrado para 3GP. Um arquivo em conformidade começa com uma caixa de tipo de arquivo que lista uma marca 3GPP, como
3gp4ou3gp6, entre suas marcas compatíveis, e a orientação para os programas de leitura de arquivos é verificar essa lista em vez de depender da marca principal. O FFmpeg exibe esses valores comomajor_brandecompatible_brandsao abrir um arquivo. Um arquivo pode conter tanto marcas 3GP quanto MP4, portanto um sufixo.3gpou.mp4por si só não determina quais regras ele segue. - 3G2 é o equivalente do 3GPP2, não um nome alternativo para 3GP. Ele tem registros separados (
video/3gpp2eaudio/3gpp2, com o sufixo usual.3g2), deve listar uma marca 3GPP2 e pode conter voz codificada com o vocoder 13K ou com EVRC, que a especificação 3GP não registra. A MP4 Registration Authority registra3g2acomo uma marca 3GPP2, e o multiplexador 3G2 do FFmpeg 8.0 grava3g2a, ou3g2bquando uma faixa é H.264. Ambos pertencem à família de arquivos ISO, portanto um único analisador pode ler qualquer um dos dois (o FFmpeg usa um único desmultiplexador para ambos), mas os decodificadores necessários podem ser diferentes. - Ao copiar fluxos de um arquivo 3GP para MP4 com o FFmpeg, o multiplexador MP4 aceita faixas H.264, H.265, MPEG-4 Parte 2 e AAC, mas não tem uma tag de entrada de amostra para H.263, AMR ou AMR-WB e para com o erro “codec not currently supported in container”. Essas faixas precisam ser recodificadas para gerar uma saída MP4. Isso abrange apenas os codecs citados e descreve as tabelas do multiplexador do FFmpeg conforme verificadas na versão 8.0, não todas as ferramentas de empacotamento. Uma tag é necessária para a cópia, mas não a garante, e copiar uma faixa não a torna, por si só, reproduzível em um navegador.
Quando o 3GP é relevante
Mantenha a ingestão de 3GP para gravações de celulares antigos e acervos de mensagens móveis legadas. Para distribuição na web, converta para MP4 com vídeo H.264 e áudio AAC, que a MDN lista como compatíveis com MP4 no Chrome, Edge, Firefox e Safari (o Firefox depende dos decodificadores do sistema operacional). Não disponibilize o próprio arquivo 3GP: o índice de formatos de contêiner da MDN cita apenas o Firefox para Android como compatível com 3GP, e os guias de codecs da MDN informam que nenhum dos principais navegadores disponibilizou decodificação H.263 e indicam AMR como não compatível com Chrome e Firefox. Copiar uma faixa para MP4 também não a torna reproduzível: recodifique vídeo MPEG-4 Parte 2, que a MDN lista como não compatível com Chrome, Edge, Opera e Safari, e verifique o suporte a H.265 nos navegadores de destino, pois a MDN o vincula à versão do navegador, ao sistema operacional e ao hardware. Mantenha também o original, pois AMR de banda estreita é áudio de voz 8 kHz, e recodificá-lo acrescenta compatibilidade, não fidelidade.
Como a Transloadit ajuda com 3GP
A tabela de formatos de áudio/vídeo da Transloadit, que abrange Robots baseados no FFmpeg, como o /video/encode, lista 3gp e 3g2 como formatos que esses Robots podem gravar. Ambas as linhas mostram Read como No porque cada linha corresponde ao multiplexador do FFmpeg com esse nome, e o FFmpeg lê esses arquivos por meio de um desmultiplexador separado e compartilhado. Como descreve a documentação de formatos do FFmpeg, esse único desmultiplexador lida com toda a família MOV, MP4 e 3GP, e o FFmpeg o identifica pelo nome combinado mov,mp4,m4a,3gp,3g2,mj2, que inclui tanto 3gp quanto 3g2, ao abrir um arquivo desse tipo.
A tabela informa o que cada versão do stack do FFmpeg pode ler e gravar, não um resultado testado para cada codec contido em um upload 3GP. O comportamento da cópia de fluxos descrito nos fatos principais foi verificado no código-fonte do FFmpeg 8.0, não em um stack da Transloadit. Processe um arquivo legado representativo com sua Assembly antes de depender desse comportamento.
Explore os formatos de arquivo e os recursos de compressão da Transloadit
Fontes
- ETSI TS 126 244 V19.1.0 (3GPP TS 26.244): formato de arquivo 3GPP (3GP)
- RFC 3839: registros de tipos MIME para arquivos multimídia 3GPP
- RFC 4393: registros de tipos MIME para arquivos multimídia 3GPP2
- RFC 4867: formato de carga útil e armazenamento em arquivo de AMR e AMR-WB (taxas de amostragem dos codecs)
- MP4 Registration Authority: marcas registradas (códigos de marca 3GPP e 3GPP2)
- Documentação de formatos do FFmpeg: desmultiplexador mov/mp4/3gp e multiplexadores ISOBMFF
- FFmpeg 8.0 movenc.c, linhas 8749–8821: tabelas de tags de codecs dos multiplexadores 3GP e MP4
- FFmpeg 8.0 movenc.c, linhas 5934–5973: marcas de tipo de arquivo gravadas pelos multiplexadores 3GP e 3G2
- Chamado #10864 do FFmpeg: falha na cópia de fluxo AMR-NB para MP4 e 3GP (relatada no FFmpeg 4.4.4 e 6.1.1)
- MDN: formatos de contêiner de mídia (suporte a 3GP nos navegadores; codecs compatíveis com MP4)
- MDN: guia de codecs de vídeo para a web (suporte a H.263, MPEG-4 Parte 2 e H.265 nos navegadores)
- MDN: guia de codecs de áudio para a web (suporte a AMR nos navegadores)