Je souhaite concaténer plusieurs fichiers WAV en un seul fichier WAV à l'aide de FFMPEG.
J'ai utilisé la commande suivante et elle génère le fichier requis.
Commander:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Fichier :
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Mais comme vous pouvez le voir, le problème est que je dois créer un fichier texte pour spécifier la liste des fichiers WAV à concaténer.
Je peux faire toutes ces tâches, mais je préférerais une commande unique quelque chose qui ressemble à
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
ou
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
J'ai essayé ces deux commandes simples mais elles ne renvoient que la voix de 1.wav
Veuillez m'aider à écrire une seule commande (ou corriger les 2 commandes ci-dessus) qui permet d'obtenir le résultat souhaité.
Veuillez ne pas suggérer d'autres encodeurs / éditeurs multimédias, je veux utiliser FFMPEG uniquement, car il est déjà installé et utilisé à d'autres endroits.
[0:0][1:0][2:0][3:0]
pour correspondre au nombre de fichiers. Utilisez-le exactement comme il est dit. La seule chose que vous devez changer est les fichiers d'entrée etn=4
.Too many inputs specified for the "concat" filter.
lorsque j'essaie de traiter seulement 2 entrées avec le code d'origine. Cela fonctionne quand je supprime[2:0][3:0]
... ce qui est logique pour moi car dans ce cas, il n'y a pas de flux2:0
et3:0
...n
.Je pense que la meilleure option est d'utiliser sox, pas ffmpeg:
La solution vient de Comment puis-je ajouter un tas de fichiers .wav tout en conservant l'ordre numérique (sans remplissage nul)?
la source
.wav
, maissox
ne semble pas prendre en charge.mp3
..wav
Le wiki FFmpeg mentionne que l' utilisation du
concat
protocole n'est pas possible avec tous les types de fichiers. Cela fonctionne très bien avec la plupart des conteneurs MPEG et des flux binaires, mais évidemment pas les fichiers WAV avec audio PCM.Vous n'avez pas nécessairement à créer un fichier temporaire et à l'utiliser. Avec Bash (ou d'autres shells qui prennent en charge la substitution de processus ), vous pouvez tout faire en une seule commande:
La substitution de processus
<( )
crée un fichier - ou, pour être précis, un descripteur de fichier - à la volée, quiffmpeg
peut être lu. Ce fichier contiendra le chemin d'accès à chaque.wav
fichier du répertoire courant. Nous devons le préfixer avec$(pwd)
pour obtenir le chemin correct par rapport à votre répertoire actuel, et non par rapport au descripteur de fichier.Bien sûr, la commande dans la substitution peut être changée en autre chose.
la source
Unsafe file name
erreur, vous aurez besoin d'une-safe 0
option avant-i
. réf. stackoverflow.com/q/38996925/297679Une autre option consiste à utiliser concat
la source
Dans le script Cmd.EXE .BAT de Win8:
De cette façon, vous ne vous souciez pas des noms de fichiers source ou du paramètre de décompte concaténé.
la source
Vous pouvez utiliser
shntool
pour les fichiers wav.la source