44 votes

Ffmpeg joindre deux fichiers mp4 avec ffmpeg en ligne de commande

Je peux joindre avec succès plusieurs fichiers en utilisant 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 d'accès aux fichiers à 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'

Y a-t-il un moyen d'atteindre le même objectif sans avoir à lire les chemins d'accès aux 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 ?

1voto

Marius Hofert Points 224

J'ai également préféré la réponse de Qwertiy. Voici un script (fonctionne pour un nombre arbitraire de fichiers, également pour .mov; testé sur macOS):

#!/bin/bash

if [ $# -lt 1 ]; then
    echo "Utilisation: `basename $0` input_1.mp4 input_2.mp4 ... output.mp4"
    exit 0
fi

ARGS=("$@") # déterminer tous les arguments
output=${ARGS[${#ARGS[@]}-1]} # obtenir le dernier argument (fichier de sortie)
unset ARGS[${#ARGS[@]}-1] # le supprimer du tableau
(pour f dans "${ARGS[@]}"; faîtes echo "fichier '$f'"; fait) | ffmpeg -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -vcodec copy -acodec copy $output

1voto

PureTryOut Points 87

Les "chapitres" GoPro sont des séquences d'environ 4 Go - La caméra démarre un nouveau fichier toutes les ~ 10 minutes. Si vous avez des fichiers multimédias exactement avec le même codec et les mêmes paramètres de codec, vous pouvez les concaténer assez facilement. Le moyen le plus rapide, que j'ai trouvé, est d'utiliser ffmpeg avec la fonction de concaténation :

ffmpeg -f concat -safe 0 -i <(for f in *.MP4; do echo "file '$PWD/$f'"; done) -c copy output.mp4

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X