Utilisation de ffmpeg pour copier par lots les métadonnées d’un fichier à un autre

0

J'ai vu d'excellents articles sur la façon d'utiliser ffmpeg pour copier des métadonnées d'un fichier à un autre sans réencodage. Mais j'ai plus de 100 fichiers et j'aimerais le faire en batch. Aucune suggestion?

Informations supplémentaires: J'ai 2 dossiers, l'un contient les fichiers vidéo avec les métadonnées correctes, l'autre les fichiers vidéo avec les métadonnées incorrectes. Les fichiers ont les mêmes noms de fichiers correspondants.

Adrian L
la source

Réponses:

0

Je vais vous donner une réponse de script, il y a peut-être un outil plus général pour cela.

Pour les futurs lecteurs, ce script explique comment copier des métadonnées: Utiliser ffmpeg pour copier les métadonnées d’un fichier à un autre .

Le script suivant parcourt les fichiers d’un répertoire, rechercher les fichiers correspondants dans un deuxième répertoire, puis combiner ces deux fichiers dans un troisième répertoire de sortie

dir1=FIRST DIRECTORY
dir2=SECOND DIRECTORY
output=OUTPUT DIRECTORY
for file in $(ls $dir1); do
  ffmpeg -i "$dir1/$file" -i "$dir2/$file" -map 1 -c copy \
   # copies all global metadata from in0.mkv to out.mkv  
   -map_metadata 0 \
   # copies video stream metadata from in0.mkv to out.mkv
   -map_metadata:s:v 0:s:v \
   # copies audio stream metadata from in0.mkv to out.mkv
   -map_metadata:s:a 0:s:a \
   "$outdir/$file"
done

La commande de mappage de métadonnées est adaptée de la réponse citée.

Si vous voulez rendre quelque chose réutilisable, vous pouvez le mettre dans un script avec l'en-tête suivant (supprimez l'affectation pour dir1, dir2 et la sortie dans le script ci-dessus). Et puis appelez-le comme script.sh dir1 dir2 outdir

#!/bin/bash
set -x errexit # exit immediately on error
dir1="$1"
dir2="$2"
output="$3"

Attention: je n'ai exécuté aucun de ces scripts.

Att Righ
la source
Génial! merci pour votre réponse utile, exactement ce que je cherchais.
Adrian L