Outils pour utilisateurs

Outils du site


convertir_une_video_3gp

Convertir une vidéo 3gp/amr en mpeg4/aac

Cas d'utilisation

J'ai reçu une vidéo via MMS au format 3gp. Je souhaite la visionner sur mon ordi.

La vidéo contient un flux audio au format amr.

Contenu du fichier

$ ffprobe mon-fichier.3gp
  …
  Metadata:
    major_brand     : 3gp5
    minor_version   : 256
    compatible_brands: isom3gp53gp4
    creation_time   : 2025-12-09T10:40:25.000000Z
  Duration: 00:00:42.05, start: 0.000000, bitrate: 73 kb/s
  Stream #0:0[0x1](und): Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, fltp, 12 kb/s (default)
    Metadata:
      creation_time   : 2025-12-09T10:40:25.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Video: h263 (s263 / 0x33363273), yuv420p, 176x144 [SAR 12:11 DAR 4:3], 59 kb/s, 10 fps, 10 tbr, 600 tbn (default)

Lecture

Dans mon cas, la lecture sur ordi du fichier 3gp restitue bien la vidéo mais le son est massacré, le rendant inaudible.

Je décide convertir le fichier vers un format que mon ordi lit correctement.

Conversion

Je n'ai pas trouvé le moyen de tout faire en une seule commande :-\ Je procède en 3 étapes :

  1. extraction de la piste vidéo seule
  2. extraction de la piste audio seule
  3. assemblage des deux pistes

Prérequis

ffmpeg doit être installé et doté d'un codec amr. Sur Debian 12, les paquetages de codecs suivants sont installés :

  • libavcodec-extra1),
  • libopencore-amrnb0,
  • libopencore-amrwb0.

Conversion

Extraction vidéo :

ffmpeg -i mon-fichier.3gp -an -vcodec copy mon-fichier-video.3gp

Extraction audio :

ffmpeg -i mon-fichier.3gp -map 0:a -acodec copy mon-fichier-audio.amr

Combinaison audio et vidéo :

ffmpeg -i mon-fichier-video.3gp -i mon-fichier-audio.amr mon-fichier.mp4

Rotation sans réencodage (si besoin) :

ffmpeg -i mon-fichier.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy mon-fichier-mod.mp4

Script

Un script de conversion (sans rotation) permet de simplifier l'opération.

 3gp2mp4.sh mon-fichier.3gp
3gp2mp4.sh
#!/bin/bash
# Convertit un fichier 3gp/amr en mpeg4/aac
# Fonctionne en chemin absolu ou relatif et depuis un script
# Utilisation : 3gp2mp4 (<chemin-vers-mon-fichier.3gp> | <mon-fichier.3gp>)
 
repertoire="$(dirname "$1")"
radical="$(basename "$1")"
root=${radical%.*}
ext=${radical#"$root"}
ffmpeg -i $1 -an -vcodec copy "$repertoire/${root}-video${ext}"
ffmpeg -i $1 -map 0:a -acodec copy "$repertoire/${root}-video.amr"
ffmpeg -i "$repertoire/${root}-video${ext}" -i "$repertoire/${root}-video.amr" "$repertoire/${root}.mp4"
rm "$repertoire/${root}-video${ext}" "$repertoire/${root}-video.amr"

Résultat

  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.27.100
  Duration: 00:00:42.10, start: 0.000000, bitrate: 80 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 176x144 [SAR 12:11 DAR 4:3], 40 kb/s, 10 fps, 10 tbr, 10240 tbn (default)
    Metadata:
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : Lavc59.37.100 libx264
    Side data:
      displaymatrix: rotation of 90.00 degrees
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 8000 Hz, mono, fltp, 38 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

Ce qui n'a pas fonctionné

La commande typique pour convertir le fichier en mpeg4 / mp3 encapsulé dans un conteneur avi est la suivante :

ffmpeg -i mon-fichier.3gp -vcodec mpeg4 -acodec mp3 movie.avi

La vidéo convertie est exploitable mais le son est toujours inutilisable (il produit d'autres bruits qu'en la lecture au format natif).

Diverses tentatives d'extraction-conversion du son seul donnent également des résultats inexploitables.

ffmpeg -i mon-fichier.3gp -ar 22050 mon-fichier.mp3
ffmpeg -i mon-fichier.3gp -ar 8000 mon-fichier.mp3
ffmpeg -i mon-fichier.3gp -ar 44100 mon-fichier.wav
1)
Pour des raisons de licence, libavcodec ne contient pas de codec amr.
convertir_une_video_3gp.txt · Dernière modification : de Flaz