PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2025 → Extraite les metadonnées des fichiers vidéos
Extraite les metadonnées des fichiers vidéos
Started by Denis, Aug., 24 2023 8:25 AM - 10 replies
Registered member
189 messages
Posted on August, 24 2023 - 8:25 AM
Bonjour,
Je suis loin d'être un spécialiste en matière de vidéo. En achetant la V.27, j'espérais beaucoup du champ multimédia, mais, au final, il n'apporte pas grand chose de plus que l'Active Media Player de Microsoft.
Donc, pour extraire les métadonnées de fichiers vidéo, je dois faire appel à EXIFTOOL, mais cà fait un peu bricolage : Ligne de commande, masquage de fenêtre DOS, création et lecture de fichiers intérmédiaires... bof, bof...
Existe-il un moyen fiable et "propre" de faire çà avec des DLL Microsoft ou autre ?
Merci aux spécialistes de m'apporter leurs lumières.
Registered member
1,046 messages
Posted on August, 26 2023 - 11:46 AM
Registered member
189 messages
Posted on August, 27 2023 - 3:13 AM
Merci Cédric pour ce lien.
Je l'avais trouvé et testé en vain avec plusieurs versions de MEDIAINFO.DLL. Cà n'a jamais fonctionné.
J'utilise la fonction MCI pour récupérer la durée en HH:MM:SS:CCC. C'est parfois plus précis que les metadonnées.
Et avec les caméras d'action modernes (GoPro, DJI, INSTA,...), il peut y avoir plusieurs milliers de lignes à extraire des metadatas : Mediainfo.dll ne fait pas le job. Il faut pouvoir extraire du EXIF, du GPS, du XMP, de l'IPTC, etc... selon l'origine matériel du fichier média
Registered member
175 messages
Posted on August, 27 2023 - 12:07 PM
Bonjour Denis,
peu etre ceci?:
Metadata.dll
https://www.dlldownloader.com/metadata-dll/
ou
https://dzone.com/articles/extracting-file-metadata-c-and-0

S.

--
Stephane Dujourdy
Softwares made on measure and computing advice since 1980
Softwares made on measure for Diamond and Luxe sector since 1999
info@diamondsoftware.net
http://www.diamondsoftware.net
Registered member
962 messages
Posted on August, 28 2023 - 8:01 AM
Hello,
il y a aussi l'assemblage dotnet MetaDataExtractor de licence Apache-2 :
MetadataExtractor is a straightforward .NET library for reading metadata from image, movie and audio files.
The library understands several formats of metadata, many of which may be present in a single image:
Exif
IPTC
XMP
JFIF / JFXX
ICC Profiles
GPS

Le projet se trouve ici :
https://github.com/drewnoakes/metadata-extractor-dotnet
Voici comment l'intégrer dans Windev
1 - Télécharger le fichier paquet nuget (.nupkg) qui se trouve ici :
https://www.nuget.org/packages/MetadataExtractor (cliquer sur download package)
2 - Ouvrir le fichier nupkg avec 7zip par exemple et extraire le fichier MetadataExtractor.dll qui se trouve dans lib/net45
3 - Cet assemblage a une dépendance avec un autre assemblage : XmpCore. Télécharger le fichier paquet nuget (.nupkg) de cet assemblage qui se trouve ici :
https://www.nuget.org/packages/XmpCore/
4 - Ouvrir le fichier nupkg avec 7zip par exemple et extraire le fichier XmpCore.dll qui se trouve dans lib/net35
5 - Inclure ces deux assemblages dotnet dans son projet
Voici un exemple de code pour lire toutes les metadata d'un fichier sous windev en utilisant ces 2 assemblages :
listeDir est un System.Object dynamique
rep est un MetadataExtractor.Directory dynamique
balise est un MetadataExtractor.Tag dynamique
QUAND EXCEPTIONEXCEPTION DANS
listeDir = ImageMetadataReader.ReadMetadata("maVideo.mp4")
FAIRE
Trace("Erreur Lecture Fichier : " + ExceptionInfo())
RETOUR
FIN
POUR TOUT rep de listeDir
POUR TOUTE balise de rep.Tags
QUAND EXCEPTIONEXCEPTION DANS
// Si rep.Name = "GPS" And balise.Name = "GPS Latitude" ALORS Trace( rep.Name + " - " + balise.Name + " : " + balise.Description)
Trace( rep.Name + " - " + balise.Name + " : " + balise.Description)
FAIRE
Trace("Erreur Lecture tag " + balise.Name + " : " + ExceptionInfo())
CONTINUER
FIN
FIN
FIN


--
Ami calmant, J.P
Registered member
189 messages
Posted on August, 29 2023 - 7:18 AM
Merci à vous,
Je vais tester tout çà et, si possible, comparer les possibilités des solutions : lecture / écriture de métadonnées.
C'est vraiment dommage que les fonctions WINDEV ne soient pas plus évoluées à ce niveau.
Registered member
189 messages
Posted on August, 30 2023 - 1:05 AM
@Jurassic
J'ai chargé et installé les 2 DLL et je teste MetadataExtractor.
Mais je me prends systématiquement un message d'erreur
"Erreur Lecture Fichier : L'initialisation du Framework .NET a échoué. Vérifiez vos paramètres de sécurité .NET. Il n'est généralement pas permis d'utiliser le Framework .NET depuis un chemin réseau."
Je n'utilise aucun chemin réseau : Ma vidéo de test est dans le répertoire courant.
Et comment vérifier les paramètres de sécurité .NET ?
Merci pour ton aide
Registered member
189 messages
Posted on August, 30 2023 - 1:28 AM
Bon, j'ai trouvé comment outrepasser le message de sécurité. Il faut modifier 2 clés dans la BdR Windows (Possible en Windev)

Key : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
Value: SchUseStrongCrypto
Type: REG_DWORD
Data : 1

Key : HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319
Value: SchUseStrongCrypto
Type: REG_DWORD
Data : 1
Registered member
189 messages
Posted on August, 30 2023 - 1:39 AM
En matière d'extraction de métadonnées d'une vidéo, le résultat est sans appel...
EXIFTOOL 219 balises extraites
METADATAEXTRACTOR 75 balises extraites
Registered member
962 messages
Posted on August, 30 2023 - 9:43 AM
Hello,
sinon tu peux utiliser ma classe windev cConsole qui se trouve ici :
https://www.developpez.net/forums/d1240420/environnements-developpement/windev/contribuez/wd-classe-cconsole-win32-console/…
qui permet de récupérer ce qui est affiché quand on lance une ligne de commande.
Exemple d'utilisation :
MaConsole est un cConsole
FichierSrc est une chaîne = "d:\tmp\Images\QuickTime.mov"
MaCommande est une chaîne = ChaîneConstruit("d:\tmp\exiftool\exiftool.exe %1 ", FichierSrc)
MaConsole:SetCmd(MaCommande)
MaConsole:ExécuterCmd()
Resultat est une chaîne = MaConsole:SortieAnsi()
Trace(Resultat)






--
Ami calmant, J.P
Registered member
189 messages
Posted on August, 30 2023 - 10:59 AM
Merci, Jurassic
Quitte à utiliser la ligne de commande, je vais rester avec ma procédure EXIFTOOL qui est très "autonome".

//--- CONSTRUCTION DE LA LIGNE DE COMMANDE
xLig_Cde = fRepEnCours()+"\exiftool.bat "+Caract(34)+Table_VDOS.Fichier_Vidéo[I]+Caract(34)+" "+Caract(34)+xFic_Metadatas+Caract(34)

//--- RECUPERER LES METADONNEES DANS UN FICHIER TEXTE VIA LE FICHIER DE COMMANDE EXFITOOL.BAT
xRes_Lance = LanceAppli(xLig_Cde,exeIconise,exeBloquant)

Le Fichier .BAT
exiftool -ee -g %1 > %2


Le truc, c'est qu'avec les nouvelles caméras (action, gimbal, drone, cctv, etc..), il faut pouvoir récupérer des milliers de métadonnées (Gimbal, positions GPS, altitudes, etc...) En plus, les marques prolifèrent, et d'une marque à l'autre, les tags sont différents et formatés différemment.
Un des derniers fichiers que j'ai traité contenait pas moins de 67000 métadonnées !!!

Avec EXIFTOOL, il faut passer par un fichier .BAT qui contient la ligne de commande avec passage de paramètres %1,%2,etc...
On peut générer un fichier TXT non formatté, mais avec un pseudo séparateur entre TAG et VALEUR
Il suffit ensuite de charger ce fichier TXT et de le traiter avec les commandes WINDEV pour extraire TAGS ET VALEURS
J'ai optimisé mon code pour éviter que çà lag trop.

Cà vaudrait vraiment le coup que WINDEV sorte un peu du monde de la gestion pour se pencher sur celui du multimédia.

Un grand merci à vous deux pour toutes ces pistes. En espérant que çà en aidera d'autres aussi
Message modified, August, 30 2023 - 11:05 AM