Je peux joindre avec succès plusieurs fichiers à l'aide de la commande suivante:
ffmpeg -f concat -i input.txt -codec copy output.mp4
Le seul problème avec cette commande est que vous devez lire les chemins de fichier à partir du fichier texte appelé input.txt avec le contenu suivant:
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
Existe-t-il un moyen d'atteindre le même objectif sans avoir à lire les chemins de fichiers à partir d'un fichier? J'ai essayé ce qui suit sans succès:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
Dois-je utiliser une commande différente?
command-line
ffmpeg
Fabio Delarias
la source
la source
Réponses:
Mise à jour 2019:
Comme mentionné dans les commentaires, Stack Overflow a une excellente description des options disponibles pour la concaténation, ainsi qu'une discussion sur la méthode à utiliser en fonction des types de fichiers que vous utilisez:
Comment concaténer deux fichiers MP4 à l'aide de FFmpeg?
Réponse originale de 2016:
Vous devriez pouvoir utiliser la méthode du protocole concat pour combiner les fichiers:
De plus, le manuel FFmpeg décrit une méthode spécifique pour les fichiers MP4, afin de les concaténer sans perte, mais nécessite que vous créiez des fichiers temporaires (ou des canaux nommés):
la source
output.mp4
.Vous pouvez remplacer le fichier par liste en sortant la liste
stdout
et en lisant la liste parstdin
par ffmpeg:la source
Non, il semble qu'il n'y ait aucun moyen d'utiliser le démultiplexeur ffmpeg concat sur une seule ligne de commande sans pirater. Vous devez créer le fichier texte d'entrée avec la liste des fichiers. Je pensais que c'était étrange moi-même, peut-être que quelqu'un l'ajouterait à FFMpeg à une date ultérieure.
La réponse acceptée à cette question utilise le protocole concat, pas le démultiplexeur concat qui est ce que l'OP a demandé.
la source
Vous pouvez toujours le faire dans un script sans modifier la commande. Quelque chose comme:
Le $$ se développe au pid du shell exécutant la commande, donc le nom du fichier sera différent à chaque fois que vous l'exécuterez. vous pouvez donc utiliser $$. txt si vous préférez. Ou autre chose...
Vous pouvez également utiliser ici des fichiers pour ajouter un tas de données au fichier:
bash La substitution de variable fonctionne, vous pouvez donc déterminer par programme le contenu du fichier, il n'a pas besoin d'être corrigé. J'intègre ce genre de trucs dans les boucles tout le temps. Enfin, la redirection fonctionne de la même manière que ci-dessus, donc> $$. Tmp tronque puis écrit, >> $$. Tmp ajoute.
la source