Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 05/10/2013, à 03:34

PDemong

[Résolu] Quelle commande pour supprimer la 2e piste audio d'un MP4 ?

Bonjour la communauté,

j'ai produit des MP4 (H264/AAC avec HandBrakeCLI) à partir de plusieurs dizaines de vidéos en DV, et les MP4 obtenus ont 2 pistes audio au lieu d'une. Voici comment est analysé par mediainfo l'un de mes fichiers MP4 :

mediainfo fichier.mp4
General
Complete name                            : fichier.mp4
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42
File size                                : 20.0 MiB
Duration                                 : 44s 928ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 3 727 Kbps
Encoded date                             : UTC 2013-09-28 01:29:37
Tagged date                              : UTC 2013-09-28 01:33:02
Writing application                      : HandBrake rev0 2013051899

Video
[...]
Audio #1
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 44s 928ms
Bit rate mode                            : Variable
Bit rate                                 : 160 Kbps
Maximum bit rate                         : 186 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 32.0 KHz
Compression mode                         : Lossy
Stream size                              : 877 KiB (4%)
Encoded date                             : UTC 2013-09-28 01:29:37
Tagged date                              : UTC 2013-09-28 01:33:02

Audio #2
ID                                       : 3
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 44s 928ms
Bit rate mode                            : Variable
Bit rate                                 : 2 254 bps
Maximum bit rate                         : 2 416 bps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 32.0 KHz
Compression mode                         : Lossy
Stream size                              : 12.4 KiB (0%)
Encoded date                             : UTC 2013-09-28 01:29:37
Tagged date                              : UTC 2013-09-28 01:33:02

Je voudrais supprimer la piste Audio #2 : quelqu'un  saurait-il comment faire ? Je tiens à le faire en ligne de commande (ffmpeg? mencoder? HandBrakeCLI?), afin de scripter le traitement sur de nombreux fichiers.

Merci d'avance,
Patrick

Dernière modification par PDemong (Le 05/10/2013, à 04:10)

Hors ligne

#2 Le 05/10/2013, à 04:10

PDemong

Re : [Résolu] Quelle commande pour supprimer la 2e piste audio d'un MP4 ?

Bon alors je viens de trouver une réponse sur un forum en anglais, et je viens de la tester avec succès. Cela se fait très facilement avec ffmpeg.
Tout d'abord on utilise l'option "-i" pour analyser et repérer les pistes (stream) qui nous intéressent :

ffmpeg -i fichier.mp4
ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:00:59 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'capture2010.08.12_15-00-26.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2013-09-28 01:29:37
    encoder         : HandBrake rev0 2013051899
  Duration: 00:00:44.92, start: 0.000000, bitrate: 3726 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 640x480, 3559 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2013-09-28 01:29:37
    Stream #0.1(und): Audio: aac, 32000 Hz, stereo, s16, 159 kb/s
    Metadata:
      creation_time   : 2013-09-28 01:29:37
    Stream #0.2(und): Audio: aac, 32000 Hz, stereo, s16, 2 kb/s
    Metadata:
      creation_time   : 2013-09-28 01:29:37
At least one output file must be specified

Dans l'exemple ci-dessus, voici les lignes intéressantes :

    Stream #0.0(und): Video: h264 (High), yuv420p, 640x480, 3559 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
    Stream #0.1(und): Audio: aac, 32000 Hz, stereo, s16, 159 kb/s
    Stream #0.2(und): Audio: aac, 32000 Hz, stereo, s16, 2 kb/s

La vidéo est donc sur la stream 0.0, et les pistes audio sont sur les streams 0.1 et 0.2.

Je vais alors faire une copie en ne retenant que les pistes 0.0(vidéo) et 0.1(audio qui m'intéresse), à l'aide de la commande suivante :

ffmpeg -i fichier.mp4 -map 0.0 -map 0.1 -vcodec copy -acodec copy fichier_corrigé.mp4

Et le tour est joué!

Hors ligne

#3 Le 19/11/2017, à 20:41

Stylou

Re : [Résolu] Quelle commande pour supprimer la 2e piste audio d'un MP4 ?

Un grand merci pour cette commande, c'est exactement ce que je cherchais à faire

Hors ligne

#4 Le 20/11/2017, à 10:35

Lulux3

Re : [Résolu] Quelle commande pour supprimer la 2e piste audio d'un MP4 ?

Bonjour
La commande indiquée par PDEmong fonctionne bien entendu, mais je te suggère plutôt cette variante, plus générale, donc peut-être plus adaptée pour ton script:

ffmpeg -i <fichier source> -map 0 -map -0:a:1 -c copy <fichier corrigé>

avec cette syntaxe, ffmpeg va copier toutes les pistes, quelle que soit leur nature (vidéo, audio, sous-titres), sauf la deuxième piste audio.

Hors ligne