#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