Accueil > > > DURÉE D'UN FICHIER AUDIO ET VIDÉO GRÂCE À L'API MCISENDSTRING
DURÉE D'UN FICHIER AUDIO ET VIDÉO GRÂCE À L'API MCISENDSTRING
Information sur la source
Description
Voilà un morceau de code pour récupérer la durée de fichiers vidéos (avi, mpg, wmv, asf...) et audios (mp3, wav...).
Avec à l'API mciSendString, on ouvre le fichier, on récupère sa durée et on le ferme.
Il existe aussi l'API AVIFileInfo mais elle met trop de temps à renvoyer cette valeur d'après mes tests.
Essayez de tester avec vos fichiers et dites-moi ce que ça donne. Dites-moi aussi si avez d'autres mèthodes pour effectuer cette opération rapidement et avec peu de code.
Source
- Option Explicit
-
- 'API Windows Multmedia à laquelle on envoit des commandes
- Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
-
- Private Sub Form_Load()
-
- Dim sFichierTest As String
- Dim sDureeTrouvee As String
-
- 'Pour tester, indiquez un nom de fichier multimédia (vidéo et son)
- sFichierTest = "D:\Documents\Mes Vidéos\MOV029.MOD"
- 'on récupère la durée du fichier
- sDureeTrouvee = DureeFichier(sFichierTest)
- 'on affiche le tout
- MsgBox "Fichier :" & vbTab & sFichierTest & vbCrLf & _
- "Durée :" & vbTab & sDureeTrouvee
-
- End Sub
-
- Private Function DureeFichier(sFichier As String) As String
-
- 'On crée un buffer de 128
- Dim sRetString As String * 128
-
- On Error Resume Next
-
- 'on ferme fichier au cas où il serait ouvert
- mciSendString "close fichier", 0, 0, 0
- 'on ouvre le fichier passé en paramètre
- mciSendString "open """ & sFichier & """ type MPEGVideo alias fichier", 0, 0, 0
- 'on règle le format temporel sur milliseconde
- mciSendString "set fichier time format ms", 0, 0, 0
- 'on récupère la durée du fichier dans le buffer
- mciSendString "status fichier length", sRetString, 128, 0
- 'on passe cette durée à la fonction FormatTemps et on l'affecte à la valeur de notre fonction
- DureeFichier = FormatTemps(CDbl(Replace(sRetString, Chr(0), "") / 1000))
- 'et enfin on ferme fichier
- mciSendString "close fichier", 0, 0, 0
-
- End Function
-
- 'Fonction qui renvoie la durée formatée ainsi 00:00:00
- Private Function FormatTemps(dTemps As Double) As String
-
- Dim lHeure As Long
- Dim lMinute As Long
- Dim lSeconde As Long
- Dim lTemps As Long
-
- lTemps = Round(dTemps)
- lHeure = Int(lTemps / 3600)
- lMinute = Int((lTemps - 3600 * lHeure) / 60)
- lSeconde = lTemps - 3600 * lHeure - 60 * lMinute
- FormatTemps = Format(lHeure, "00") & ":" & Format(lMinute, "00") & ":" & Format(lSeconde, "00")
-
- End Function
-
Option Explicit
'API Windows Multmedia à laquelle on envoit des commandes
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Sub Form_Load()
Dim sFichierTest As String
Dim sDureeTrouvee As String
'Pour tester, indiquez un nom de fichier multimédia (vidéo et son)
sFichierTest = "D:\Documents\Mes Vidéos\MOV029.MOD"
'on récupère la durée du fichier
sDureeTrouvee = DureeFichier(sFichierTest)
'on affiche le tout
MsgBox "Fichier :" & vbTab & sFichierTest & vbCrLf & _
"Durée :" & vbTab & sDureeTrouvee
End Sub
Private Function DureeFichier(sFichier As String) As String
'On crée un buffer de 128
Dim sRetString As String * 128
On Error Resume Next
'on ferme fichier au cas où il serait ouvert
mciSendString "close fichier", 0, 0, 0
'on ouvre le fichier passé en paramètre
mciSendString "open """ & sFichier & """ type MPEGVideo alias fichier", 0, 0, 0
'on règle le format temporel sur milliseconde
mciSendString "set fichier time format ms", 0, 0, 0
'on récupère la durée du fichier dans le buffer
mciSendString "status fichier length", sRetString, 128, 0
'on passe cette durée à la fonction FormatTemps et on l'affecte à la valeur de notre fonction
DureeFichier = FormatTemps(CDbl(Replace(sRetString, Chr(0), "") / 1000))
'et enfin on ferme fichier
mciSendString "close fichier", 0, 0, 0
End Function
'Fonction qui renvoie la durée formatée ainsi 00:00:00
Private Function FormatTemps(dTemps As Double) As String
Dim lHeure As Long
Dim lMinute As Long
Dim lSeconde As Long
Dim lTemps As Long
lTemps = Round(dTemps)
lHeure = Int(lTemps / 3600)
lMinute = Int((lTemps - 3600 * lHeure) / 60)
lSeconde = lTemps - 3600 * lHeure - 60 * lMinute
FormatTemps = Format(lHeure, "00") & ":" & Format(lMinute, "00") & ":" & Format(lSeconde, "00")
End Function
Conclusion
Pour tester, ouvrez un nouveau projet et collez le code dans Form1.
Si vous voulez une source complète utilisant mciSendString, j'ai fait un lecteur complet ici:
http://www.vbfrance.com/codes/CLM-DIVX-PLA YER-LECTEUR-VIDEOS-DIVX-MPG-MPEG_18199.aspx
Historique
- 18 mars 2006 18:38:59 :
- faute de frappe
- 18 mars 2006 19:43:28 :
- ajout du lien vers mon autre source
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
infos sur le cd audio (temps + nombre de pistes) [ par db2p ]
hello tousje suis en train de me faire un chti programme qui va me permettre de gerer ma collection de cd. ce que je voudrais c'est une fonction qui q
et de 2!!! MciSendString avi [ par pcpunch ]
Je repost ma question vu que la précedente n'est pas passé decidement ca deconne ce soir!!!Je test avec MciSendString si un fichier avi est lisible po
AVI (Audio/Video) [ par hackademius ]
salut , je vois tout dabord que tout le monde s'en fou des questions qu'on pose alors je reitaire ma question(sous une autre forme ) puisque persone n
AVI(Audio/Video) [ par hackademius ]
j'ai apris que AVI -> Audio / Video) - j'ai un fichier video AVI dans lequel j'ai un stream video- j'ai un fichier audio WAV dans lequel j'ai un st
VB, lancer deux video simultanement !!!!! [ par m_heff2002 ]
Bonjour Je voudrais savoir s'il y a moyen avec Visual Basic d'avoir deux video en memes temps. j'utilise #If Win32 Then Private
Temps complet d'un fichier audio avec MMcontrol [ par didlette62 ]
Bonjour tout le monde !!Voila j'ai un soucis, j'aimerais faire en sorte que l'utilisateur de mon lecteur puisse avancer dans la musique, mais je ne sa
Renommer des fichiers audio video [ par ricomiracle ]
J'aimerais pouvoir renommer des fichiers video .avi et photo .jpg Je suppose que je dois d'abord les ouvrir mais comment faire? Dim fso As New Script
Lecture audio et video [ par shadow1779 ]
Bonjour,je cherche comment faire en VB.NET, une lecture d'un mp3 ou autre fichier musicaux et la lecture de fichier vidéo comme les avi ou autre,
Videochat & visioconference & streaming Audio/Video [ par wilgrass1 ]
BonjourJe viens de déposer une source de visioconference sur ce site http://www.vbfrance.com/code.aspx?ID=34074 en y évoquant quelques
Lire et enregistrer une video en même temps est-ce possible? [ par Egalon ]
Bonjour les amis,ca fait un long moment que je ne suis pas venu vous voir ^^.Je vous expose mon problème mais je doute qu'il existe une réelle solutio
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|