J'ai un fichier vidéo MP4 avec plusieurs pistes audio. J'aimerais enlever le reste des pistes et n'en garder qu'une. Comment puis-je faire cela?
video-editing
Tshepang
la source
la source
Réponses:
Première exécution
ffmpeg -i file.mp4
pour voir quels flux existent dans votre fichier. Vous devriez voir quelque chose comme ça:Ensuite, lancez
ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
pour copier le flux vidéo et le second flux audionew_file.mp4
.la source
Option map (set input stream mapping) cannot be applied to input file file.mp4 new_file.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
: pour y remédier, changez simplement l'ordre des arguments de la manière suivante:ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
-c copy
d'avoir des flux identiques pour l' audio, la vidéo , mais des sous - titres aussi:ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4
.Problème lié: la suppression de toutes les pistes audio d’un fichier mp4 peut être effectuée ainsi:
la source
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
Mais j'ai ajouté ces drapeaux et c'est toujours pareil ...?Identifier les numéros de flux:
Utilisez
-map _file_:_stream_
pour sélectionner les flux à traiter et à affichervoir: https://ffmpeg.org/ffmpeg.html#Advanced-options
la source
Vous pouvez essayer
avidemux
lequel ne gère qu'un seul fichier audio en interne (et vous oblige donc à sélectionner une piste spécifique). Je n'ai jamais essayé avec .mp4 mais cela fonctionne avec d'autres formats.la source
J'ai utilisé plusieurs fois Avidemux (GUI) et ffmpeg (console).
Dans Avidemux, vous choisissez "Audio" -> "Sélectionner les pistes" dans le menu principal. puis enregistrez votre vidéo dans un nouveau fichier.
Fait intéressant, dans certains cas, Avidemux a produit une "meilleure" sortie que ffmpeg.
juste au cas où, Avidemux et ffmpeg sont dans le référentiel standard de Fedora Linux. (Je suis sûr qu'ils sont standard dans d'autres versions de Linux.)
la source
-vn
ou-an
supprimera toutes les pistes vidéo ou audio. La fourniture-vn -acodec copy
supprimera la vidéo;-an -vcodec copy
va supprimer tout l'audio.-vcodec copy
spécifie que ffmpeg doit faire une copie directe de la piste vidéo existante (et ne faire aucun traitement / encodage de celle-ci). Si vous ne le spécifiez pas, cela fonctionnera toujours, mais ffmpeg pourrait réencoder la piste vidéo existante et l'opération nécessitera davantage de ressources processeur et risque de prendre beaucoup plus de temps.la source
Utilisation d’avidemux en ligne de commande.
(Dans l'interface graphique Avidemux, comme décrit dans https://unix.stackexchange.com/a/85834/4319 ci-dessus, il vous suffit de sélectionner / désélectionner les pistes audio et d'enregistrer le fichier. (Tout est copié dans le nouvel AVI.))
J'ai examiné le type de projets enregistrés en tant que projets SpiderMonkey ou TinyPy pour mes actions. Il s'est avéré que le projet SpiderMonkey (JavaScript) ne comportait pas les actions de sélection de piste audio dont j'avais besoin, mais le projet TinyPy (Python) ne l'avait pas. leur.
J'ai tout supprimé (une douzaine de lignes inutiles), et voici ce que j'ai dans mon
some_series.py
:Il quitte la piste 1, mais laisse tomber la piste 0.
Ensuite, j'ai exécuté une conversion par lots de nombreux fichiers avec une commande comme celle-ci:
Il copie tout, mais supprime tout sauf la piste audio nécessaire.
La manière d’exécuter avidemux à partir de la ligne de commande a été apprise à l' adresse https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing , bien qu'ils ne mentionnent pas les scripts Python, mais uniquement les scripts JS ( qui n'a pas fonctionné pour moi).
la source
Si cela ne vous dérange pas que le programme soit une interface graphique, avec l' éditeur de vidéo de Blender , vous pouvez le faire et bien plus encore.
la source
Le
ffmpeg
programme a été remplacé paravconv
.avconv
a un usage très similaire àffmpeg
, donc toutes les commandes de ce post peuvent être quelque chose comme:Suivez ce lien pour installer
avconv
si vous êtes sur Ubuntu.la source
FFMPEG pourrait être une solution utile pour vous.
la source