Bonjour,
J'ai des fichiers vidéos MTS dont je voudrais conserver les données de création (en gros, c'est surtout la date de prise de vue qui m'intéresse).
D'habitude, j'utilise libav/ffmpeg avec l'option -map_metadata 0, mais c'est quand je passe d'un fichier MP4/AVI/MKV à un autre fichier MP4 (par exemple, quand j'applique HEVC).
Or, pour les fichiers MTS, c'est un petit peu différent :
La commande mediainfo ne me délivre pas d'information quant à la prise de vue.
La commande exiftool me donne la date et l'heure précise de la prise de vue.
Mes lecteurs vidéos m'affichent la date et l'heure dans un petit encart sur la vidéo.
Une fois encodés en MP4 avec libav/ffmpeg, mes fichiers vidéo ont de nombreuses métadonnées, comme le nombre d'images par seconde, le débit, etc, mais la date de création et de prise de vue est calquée sur le 1er janvier 1904, à 00:00:00…
J'ai imaginé pouvoir extraire la donnée qui m'intéresse et l'intégrer manuellement, mais j'ai des centaines de vidéos et j'en aurai encore à l'avenir, du coup, je n'ai pas trop d'idée…
Merci pour votre aide !
# My 2 cents
Posté par LaBienPensanceMaTuer . Évalué à 4.
Avec un setup:
* Soit tes fichiers sources dans un répertoire
~/sources/
et donc l'extension est.mts
* Soit tes fichiers transcodé dans un répertoire
~/transco/
et donc l'extension est.mp4
Perso, je procéderai ainsi:
~/sources
.basename
en shell).attention: ce script peut contenir erreur et bashisme :-)
Je te laisse le soin de trouver le contenu de
-tout-ki-va-bien-*
;-)[^] # Re: My 2 cents
Posté par Stinouff . Évalué à 2.
Salut,
exiftool -DateTimeOriginal fichier.jpg fonctionne pour l'extraction mais intègre du texte en plus de la date.
Ça commence à se complexifier un poil pour mes maigres compétences dans le domaine et j'aligne erreur sur erreur. xD
En tout cas, c'est gentil pour la proposition. Je travaille un peu dessus mais je recherche en parallèle une solution un peu plus…"ffmpeg-friendly"…Je me fais vieux…
[^] # Re: My 2 cents
Posté par LaBienPensanceMaTuer . Évalué à 3. Dernière modification le 27 juillet 2019 à 19:31.
Aurais tu un exemple de sortie ? Histoire que je t'aiguille avec sed pour ne garder que ce qui t'intéresse…
Par exemple, sur un JPEG qui traine dans mon home:
binarym@avalon:~$ exiftool -DateTimeOriginal IMG_20180530_195714.jpg
Date/Time Original : 2018:05:30 19:57:15
binarym@avalon:~$ exiftool -DateTimeOriginal IMG_20180530_195714.jpg |sed -e 's/^.*: //'
2018:05:30 19:57:15
Pour l'explication, je demande à sed de substituer (s/MOTIF/SUBSTITUION/) tout ce qui est compris entre le début de la ligne (
^
début de ligne,.*
n'importe quel caractère 0 ou n fois) et la première séquence:
. Je lui demande de le substituer par rien.[^] # Re: My 2 cents
Posté par Stinouff . Évalué à 2. Dernière modification le 28 juillet 2019 à 11:45.
Salut,
Après création de deux dossiers dans le répertoire de travail (sources et dest), j'applique ce script qui fonctionne :
```
!/bin/bash
for src in sources/.MTS ; do
dst=dest/$(basename ${src}.mp4)
if [ ! -f "${dst}" ] ; then
creation_date=$(exiftool -DateTimeOriginal ${src} |sed -e 's/.: //')
avconv -i ${src} -acodec libvorbis -c:v libx265 -crf 25 -y ${dst}
exiftool "-AllDates=${creation_date}" ${dst}
fi
done
```
Merci à toi !
PS : Je ne comprends rien à comment mettre du code ici. Ça indente, ça écrit "mathjax" à la place des $, ça écrit en italique, ça fait le café, mais je n'y arrive pas.
[^] # Re: My 2 cents
Posté par LaBienPensanceMaTuer . Évalué à 2.
Tout pareil … bug connu je crois…
[^] # Re: My 2 cents
Posté par Stinouff . Évalué à 2.
En tout cas, tout fonctionne, c'est plutôt propre, je ne vois pas de gros problème pour le moment. Merci beaucoup pour la piste et la rédaction quasi-complète du script. Ça m'a aussi un peu forcé à comprendre…(j'ai dû passer 4 heures à corriger tel problème ou tel truc et à comprendre ceci-cela, mais c'est aussi le but général !).
Bref, merci encore ! :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.