Problème
J'ai besoin de filtrer les fichiers de la sortie par les 12 premiers caractères, puis de les envoyer en tant que sortie de la ffmpeg
commande, puis de le refaire pour le cycle suivant.
Fichier d'entrée.
VID_20190920_195919.mp4
VID_20190920_200821.mp4
VID_20190920_221640.mp4
VID_20190921_141929.mp4
VID_20190921_142236.mp4
Sortie filtrée au 1er cycle (par 12 premiers caractères, donc par VID_20190920
).
VID_20190920_195919.mp4
VID_20190920_200821.mp4
VID_20190920_221640.mp4
Sortie filtrée au 2e cycle (par les 12 premiers caractères, donc par VID_20190921
).
VID_20190921_141929.mp4
VID_20190921_142236.mp4
etc.
Chaque cycle (liste de fichiers filtrés) doit être exporté cycle.txt
, puis le fichier doit être traité par cette commande.
ffmpeg -f concat -i cycle.txt -c copy VID_YYYYMMRR.mp4
Ensuite , nettoyez cycle.txt
par > cycle.txt
et le faire à nouveau pour le prochain cycle.
Ou est la meilleure façon de faire cela?
Merci.
Système
Linux local 5.0.0-29-lowlatency #31-Ubuntu SMP PREEMPT Thu Sep 12 14:13:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
VID_20190820*
,VID_20190825*
etc. J'ai donc besoin degrep
tous les fichiers avec ce caractère sur begin et je l'écris dans file. J'ai essayécut -c 1-12
, mais il n'y a aucun moyen d'afficher le nom complet du fichier dans ce cas. Ou peut-être que je peux utilisercut -c 1-12 | sort -n | uniq
sur cette sortie et ensuite utiliserfor
pour cette sortie. Mais y a-t-il une meilleure façon de le faire?Réponses:
En supposant que vos fichiers vidéo se trouvent dans le même répertoire, vous pouvez utiliser les commandes bash suivantes:
Le script récupère toutes les vidéos
VID_*.mp4
et supprime le suffixe_XXX.mp4
du nom.Puis, parcourez tous les noms uniques du formulaire
VID_XXX
et exécutez la commandeffmpeg
.la source
for
boucles comme j'ai essayé, mais erreur[concat @ 0x555e24bd9940] Line 1: unknown keyword 'VID_20190921_141929.mp4' /dev/fd/63: Invalid data found when processing input
. Où est la prise? J'ai essayéffmpeg -f concat -safe 0 -i <(echo ${f}*) -c copy "${f}.mp4"
aussi.ffmpeg
commande fonctionne- t-elle si vous ajoutez manuellement les noms de fichiers dans votrecycle.txt
?file 'VID_YYYYMMDD*'
. J'ai essayéffmpeg -f concat -safe 0 -i <(echo "file '${f}*'") -c copy "${f}.mp4"
, mais j'ai probablement fait quelque chose de mal.Je pense que cela peut faire:
Créez un tableau avec seulement les dates:
Parcourez le tableau, recherchez les fichiers correspondant à chaque date et enregistrez la sortie dans un fichier avec un nom d'index:
Résultat:
cycle_0.txt
cycle_1.txt
la source
À la fin, cette solution fonctionne.
Il semble que l'exportation dans un fichier est nécessaire. Ou pas?
Info.
chars
, nombre de mêmes personnages à rejoindre.Vous pouvez ajouter
-mindepth -maxdepth
à lafind
commande, pour la profondeur du dossier.la source