|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Comment trouver la longueur d'une vidéo |
Débuté par Vital Gaudreault, 24 mar. 2017 13:03 - 7 réponses |
| |
| | | |
|
| |
Posté le 24 mars 2017 - 13:03 |
J'ai besoin de pouvoir connaître la longueur d'une vidéo à partir d'un API windows. Est-ce que quelqu'un connaît la solution? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 24 mars 2017 - 15:07 |
Bonjour,
Voir la DLL MediaInfo |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mars 2017 - 08:19 |
PROCEDURE tpVideoUpdateInfo(sFileIn chaîne UNICODE)
nDurée est un entier MCIOuvre(sFileIn, "sVideoAlias") SI PAS ErreurDétectée nDurée = MCITaille("sVideoAlias") MCIFerme("sVideoAlias") FIN RENVOYER nDurée |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 25 mars 2017 - 12:33 |
hello, la dll MediaInfo est disponible ici : https://mediaarea.net/fr/MediaInfo Voici un code utilisant les descriptions d' API pour gérer la dll mediaInfo.dll et VérifieExpressionRégulière pour extraire une info particulière du résultat :
InitMediaInfo est une Description d'API InitMediaInfo..NomDLL = "mediainfo.DLL" InitMediaInfo..NomFonction = "MediaInfoA_New" InitMediaInfo..TypeRetour = apiEntierSystème handleMI est un entier système = InitMediaInfo() SI handleMI = 0 ALORS Erreur("Impossible de trouver la dll mediainfo.dll") RETOUR FIN
OuvrirMedia est une Description d'API OuvrirMedia..NomDLL = "mediainfo.DLL" OuvrirMedia..NomFonction = "MediaInfoA_Open" OuvrirMedia..Paramètre[1]..Type = apiEntierSystème OuvrirMedia..Paramètre[2]..Type = apiChaîne OuvrirMedia..TypeRetour = apiEntierSystème sFichierVidéo est une chaîne = "F:\temp\clochard.mp4" Open_result est un entier = OuvrirMedia(handleMI,sFichierVidéo) SI Open_result = 0 ALORS Erreur("Impossible de lire le fichier " + sFichierVidéo) RETOUR FIN
InfosDemandées est une Description d' API InfosDemandées..NomDLL = "mediainfo.DLL" InfosDemandées..NomFonction = "MediaInfoA_Option" InfosDemandées..Paramètre[1]..Type = apiEntierSystème InfosDemandées..Paramètre[2]..Type = apiChaîne InfosDemandées..Paramètre[3]..Type = apiChaîne InfosDemandées..TypeRetour = apiChaîne Information est une chaîne = InfosDemandées(0,"Complete","" ) Trace("Information : ",Information)
LireInfosMedia est une Description d'API LireInfosMedia..NomDLL = "mediainfo.DLL" LireInfosMedia..NomFonction = "MediaInfoA_Inform" LireInfosMedia..Paramètre[1]..Type = apiEntierSystème LireInfosMedia..Paramètre[2]..Type = apiEntierSystème LireInfosMedia..TypeRetour = apiChaîne Resultat est une chaîne = LireInfosMedia(handleMI,0) Trace(Resultat) Propriété est une chaîne = "Duration" resinfo est une chaîne
SI VérifieExpressionRégulière(Resultat,".*" + Propriété + "[ ]+: ([^" + RC + "]+)" + ".*" +RC,resinfo) ALORS Trace(Propriété + " : ",resinfo) FIN Propriété = "File size" SI VérifieExpressionRégulière(Resultat,".*" + Propriété + "[ ]+: ([^" + RC + "]+)" + ".*" +RC,resinfo) ALORS Trace(Propriété + " : ",resinfo) FIN
et voici le résultat sur un fichier mp4 :
Information : General Complete name : F:\temp\clochard.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 2.07 MiB Duration : 12s 680ms Overall bit rate : 1 370 Kbps Encoded date : UTC 2013-10-24 01:51:34 Tagged date : UTC 2013-10-24 01:51:34 Writing application : Lavf55.14.101
Video ID : 1 Format : AVC Format/Info : Advanced Video Codec etc...
Duration : 12s 680ms File size : 2.07 MiB
Les descriptions d'api sont utilisables à partir de Windev 16
-- Ami calmant, J.PMessage modifié, 25 mars 2017 - 12:34 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 27 mars 2017 - 07:36 |
hello, bon d'une part il y a un erreur dans le code de mon message précédent. A la place de
Information est une chaîne = InfosDemandées(0,"Complete","" )
c'est :
Information est une chaîne = InfosDemandées(handleMI,"Complete","" )
et d'autre part on peut aller chercher une seule information à la fois et donc ne pas être obligé d'utiliser un code d'extraction d'informations.
Voici un exemple de procédure qui va chercher une information concernant le média :
Procedure LireInfoMedia(Fichier,Information)
InitMediaInfo est une Description d'API InitMediaInfo..NomDLL = "mediainfo.DLL" InitMediaInfo..NomFonction = "MediaInfoA_New" InitMediaInfo..TypeRetour = apiEntierSystème handleMI est un entier système = InitMediaInfo() SI handleMI = 0 ALORS Erreur("Impossible de trouver la dll mediainfo.dll") RENVOYER "ERREUR" FIN
OuvrirMedia est une Description d'API OuvrirMedia..NomDLL = "mediainfo.DLL" OuvrirMedia..NomFonction = "MediaInfoA_Open" OuvrirMedia..Paramètre[1]..Type = apiEntierSystème OuvrirMedia..Paramètre[2]..Type = apiChaîne OuvrirMedia..TypeRetour = apiEntierSystème sFichierVidéo est une chaîne = Fichier Open_result est un entier = OuvrirMedia(handleMI,sFichierVidéo) SI Open_result = 0 ALORS Erreur("Impossible de lire le fichier " + sFichierVidéo) RENVOYER "ERREUR" FIN
InfosDemandées est une Description d' API InfosDemandées..NomDLL = "mediainfo.DLL" InfosDemandées..NomFonction = "MediaInfoA_Option" InfosDemandées..Paramètre[1]..Type = apiEntierSystème InfosDemandées..Paramètre[2]..Type = apiChaîne InfosDemandées..Paramètre[3]..Type = apiChaîne InfosDemandées..TypeRetour = apiChaîne Info est une chaîne =InfosDemandées(handleMI,"Inform", Information )
LireInfosMedia est une Description d'API LireInfosMedia..NomDLL = "mediainfo.DLL" LireInfosMedia..NomFonction = "MediaInfoA_Inform" LireInfosMedia..Paramètre[1]..Type = apiEntierSystème LireInfosMedia..Paramètre[2]..Type = apiEntierSystème LireInfosMedia..TypeRetour = apiChaîne Resultat est une chaîne = LireInfosMedia(handleMI,1)
FermeInfosMedia est une Description d'API FermeInfosMedia..NomDLL = "mediainfo.DLL" FermeInfosMedia..NomFonction = "MediaInfoA_Close" FermeInfosMedia..Paramètre[1]..Type = apiEntierSystème FermeInfosMedia(handleMI) RENVOYER Resultat
un exemple de code d'appel de la procédure :
Trace("Durée du média : ",LireInfoMedia("F:\temp\Clochard.mp4","General;%Duration%"), " ms") Trace("Format du média : ",LireInfoMedia("F:\temp\Clochard.mp4","General;%Format%")) Trace("Taille du fichier média : ",LireInfoMedia("F:\temp\Clochard.mp4","General;%FileSize%"), " octets") Trace("Codec Video du média : ",LireInfoMedia("F:\temp\Clochard.mp4","Video;%Codec%")) Trace("Résolution du média : ",LireInfoMedia("F:\temp\Clochard.mp4","Video;%Width%x%Height%"))
le résultat :
Durée du média : 12680 ms Format du média : MPEG-4 Taille du fichier média : 2171907 octets Codec Video du média : AVC Résolution du média : 400x224
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 23 messages |
|
Posté le 28 mars 2018 - 01:11 |
Ce topic tombe à pic pour moi Merci JP
-- Bon dev Ju' |
| |
| |
| | | |
|
| | |
| |
Posté le 11 janvier 2019 - 16:59 |
Bonjour, J'ai installé la dll et pour l'instant l'exécution de la procédure locale m'indique :
impossible de trouver la dll mediainfo.dll <---- dans quel répertoire elle doit se trouver ?
et en fait je crois que l'erreur est plus (avec erreurinfo) ...
Erreur au chargement de la dll "mediainfo.dll' Détail de l'erreur système : mediainfo.dll n'est pas une application win32 valide.
Je suis un peu perdu, que dois je faire?
Merci pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 12 janvier 2019 - 09:13 |
hello, si tu es sous un Windows 64 bits , il faut télécharger les fichiers DLL sans installeur zip des versions 64 bits et 32 bits de MediaInfo ici : https://mediaarea.net/fr/MediaInfo/Download/Windows 64 bit DLL v18.12 (without installer: 7z, zip) 32 bit DLL v18.12 (without installer: 7z, zip) il faut extraire le fichier mediainfo.dll du zip 64 bits et le mettre dans le répertoire c:\windows\system32 il faut extraire le fichier mediainfo.dll du zip 32 bits et le mettre dans le répertoire c:\windows\syswow64 si tu as une application windev 32 bits elle utilisera le mediainfo 32 bits si tu as une application windev 64 bits elle utilisera le mediainfo 64 bits j'ai testé cela sous windows 10 64 bits avec une appli WD 32 bits et 64 bits ce qui m'a permis de constater qu'il y avait une erreur pour la version 64 bits de mon code ci-dessus il faut changer la ligne :
Open_result est un entier = OuvrirMedia(handleMI,sFichierVidéo) et mettre
Open_result est un entier système = OuvrirMedia(handleMI,sFichierVidéo)
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|