Accueil > > > LECTEUR VIDEO (MULTIMEDIA) SANS OCX NI WMP - COMPLET
LECTEUR VIDEO (MULTIMEDIA) SANS OCX NI WMP - COMPLET
Information sur la source
Description
Il y a déja 30 lecteurs multimédia sur vbfrance. Celui-ci se veux très simple et n'utilise pas d'ocx. Néanmoins il intègre toutes les fonctionnalités d'un windows media player : lecture / pause / stop / slideshow / mute / toujours visible / parcours de la vidéo / zoom & stretch / capture / vitesse de lecture / volume interne (L'interface est simple pour vous éviter de lire des lignes de codes inutile) il utilise mciSendStringA() pour gérer les fichiers multimédia (rien de neuf...) En outre il récupère quelques infos sur la vidéo en cours tel que le code FOURCC du codec utilisé ainsi que la résolution (fichiers avi, mpg, asf et wmv).
Source
- 'chargez le zip
- '
- 'mode d'emploi :
- 'Cliquez sur "Changer de dossier"
- 'Choississez un dossier contenant une ou plusieurs vidéo
- 'Double-cliquez sur le nom du fichier que vous voulez lire
- '
- 'Lorsqu'il aura fini de lire le fichier, le programme sautera automatiquement au fichier suivant (en gros, c'est un slideshow de vidéo)
- '
- 'appuyer sur F10 lorsque la filelistbox a le focus pour afficher tout les fichiers multimédia du dossier ouvert.
-
- '*******************
- ' FRAGMENT DE CODE
- '*******************
- 'API nécessaire :
-
- Private Declare Function mciSendStringA Lib "winmm.dll" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
- 'récupère le nom 8.3 msdos (sans espaces)
- Private Declare Function GetShortPathNameA Lib "kernel32" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
-
- 'Déclaration générale nécessaire :
- Private AliasToUse As String
-
- Private VidHeight As Long
- Private VidWidth As Long
-
- Private Duree As Long
- Private Position As Long
-
-
- '=======================================
- 'ouvrir un fichier :
- Sub OuvrirMM(NomFichierLong As String)
- Dim BufferNom As String * 255
- Dim BufferLen As Long
- BufferLen = GetShortPathNameA(NomFichierLong, BufferNom, 255)
- NomFichierCourt$ = Left$(BufferNom, BufferLen)
-
- CmdStr = "open MPEGVideo!" & NomFichierCourt & " alias " & AliasToUse & " parent " & Picture1.hWnd & " Style " & CStr(&H40000000)
-
- mciSendStringA CmdStr, 0&, 0&, 0&
- End Sub
-
-
- '=======================================
- 'récuperer la durée :
- Sub RetDureeMM()
- Call mciSendStringA("set " & AliasToUse & " time format milliseconds", 0, 0, 0)
- Dim TDur As String * 128
- Call mciSendStringA("status " & AliasToUse & " length", TDur, 128, 0)
- Duree = Val(TDur)
- End Sub
-
-
- '=======================================
- 'commence la lecture depuis le début :
- Sub JoueMM()
- mciSendStringA "play " & AliasToUse & " from 0", 0, 0, 0
- End Sub
-
- '=======================================
- 'commence la lecture depuis une position :
- Sub ReJoueMM(NouvellePos As Long)
- mciSendStringA "play " & AliasToUse & " from " & NouvellePos, 0, 0, 0
- End Sub
-
- '=======================================
- 'stopper la lecture :
- Sub StopMM()
- mciSendStringA "stop " & AliasToUse, 0, 0, 0
- End Sub
-
-
- '=======================================
- 'récupère la position de la lecture en cours :
- Sub RetPositionMM()
- Dim TPos As String * 32
- mciSendStringA "status " & AliasToUse & " position notify", TPos, 32, &H2)
- Position = Val(TPos)
- End Sub
-
- '=======================================
- '"se déplaçer" dans le fichier :
- Sub RePositionMM(NouvellePos As Long)
- mciSendStringA "seek " & AliasToUse & " to " & NouvellePos, 0, 0, 0
- End Sub
-
-
- '=======================================
- 'couper / remettre le son :
- Sub CoupeSonMM(Oui As Boolean)
- Select Case Oui
- Case True
- mciSendStringA "set " & AliasToUse & " audio all off", 0, 0, 0
- Case Fasle
- mciSendStringA "set " & AliasToUse & " audio all on", 0, 0, 0
- End Select
- End Sub
-
-
- '=======================================
- 'récuperer la hauteur et la largeur de la vidéo :
- Sub RetTailleMM()
- Dim MaxXY As String * 128
- Dim MaxXY2 As String
- Call mciSendStringA("where " & AliasToUse & " destination", MaxXY, 128, 0)
-
- MaxXY2 = Left(TDur, InStr(1, MaxXY, Chr$(0)) - 1)
- MaxXY2 = Trim(MaxXY2)
- If Len(MaxXY2) > 1 Then
- p1 = InStrRev(MaxXY2, " ")
- VidHeight = Val(Mid(MaxXY2, p1 + 1))
- p2 = InStrRev(MaxXY2, " ", p1 - 1)
- VidWidth = Val(Mid(MaxXY2, p2 + 1, p1 - p2 - 1))
- End If
- End Sub
-
- '=======================================
- 'redimensionner la fenêtre (zoom, stretch)
- Sub RedimensionneMM(NouvLarg As Long, NouvHaut As Long)
- st$ = NouvLarg & " " & NouvHaut
- mciSendStringA "put " & AliasToUse & " window at 0 0 " & st$, 0, 0, 0
- mciSendStringA "put " & AliasToUse & " destination at 0 0 " & st$, 0, 0, 0
- End Sub
-
- '=======================================
- 'regler la vitesse de lecture (1000 = vitesse 1x, 500 = 0.5x)
- Sub VitesseMM(NouveauFacteur As Long)
- mciSendStringA "set " & AliasToUse & " speed " & NouveauFacteur, 0, 0, 0
- End Sub
-
- '=======================================
- 'regler le volume interne (et non de windows)
- '(1000 = nominal, 500 = 2 fois moins fort)
- Sub VolumeMM(NouveauFacteur As Long)
- mciSendStringA "setaudio " & AliasToUse & " volume to " & NouveauFacteur, 0, 0, 0
- End Sub
-
'chargez le zip
'
'mode d'emploi :
'Cliquez sur "Changer de dossier"
'Choississez un dossier contenant une ou plusieurs vidéo
'Double-cliquez sur le nom du fichier que vous voulez lire
'
'Lorsqu'il aura fini de lire le fichier, le programme sautera automatiquement au fichier suivant (en gros, c'est un slideshow de vidéo)
'
'appuyer sur F10 lorsque la filelistbox a le focus pour afficher tout les fichiers multimédia du dossier ouvert.
'*******************
' FRAGMENT DE CODE
'*******************
'API nécessaire :
Private Declare Function mciSendStringA Lib "winmm.dll" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
'récupère le nom 8.3 msdos (sans espaces)
Private Declare Function GetShortPathNameA Lib "kernel32" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
'Déclaration générale nécessaire :
Private AliasToUse As String
Private VidHeight As Long
Private VidWidth As Long
Private Duree As Long
Private Position As Long
'=======================================
'ouvrir un fichier :
Sub OuvrirMM(NomFichierLong As String)
Dim BufferNom As String * 255
Dim BufferLen As Long
BufferLen = GetShortPathNameA(NomFichierLong, BufferNom, 255)
NomFichierCourt$ = Left$(BufferNom, BufferLen)
CmdStr = "open MPEGVideo!" & NomFichierCourt & " alias " & AliasToUse & " parent " & Picture1.hWnd & " Style " & CStr(&H40000000)
mciSendStringA CmdStr, 0&, 0&, 0&
End Sub
'=======================================
'récuperer la durée :
Sub RetDureeMM()
Call mciSendStringA("set " & AliasToUse & " time format milliseconds", 0, 0, 0)
Dim TDur As String * 128
Call mciSendStringA("status " & AliasToUse & " length", TDur, 128, 0)
Duree = Val(TDur)
End Sub
'=======================================
'commence la lecture depuis le début :
Sub JoueMM()
mciSendStringA "play " & AliasToUse & " from 0", 0, 0, 0
End Sub
'=======================================
'commence la lecture depuis une position :
Sub ReJoueMM(NouvellePos As Long)
mciSendStringA "play " & AliasToUse & " from " & NouvellePos, 0, 0, 0
End Sub
'=======================================
'stopper la lecture :
Sub StopMM()
mciSendStringA "stop " & AliasToUse, 0, 0, 0
End Sub
'=======================================
'récupère la position de la lecture en cours :
Sub RetPositionMM()
Dim TPos As String * 32
mciSendStringA "status " & AliasToUse & " position notify", TPos, 32, &H2)
Position = Val(TPos)
End Sub
'=======================================
'"se déplaçer" dans le fichier :
Sub RePositionMM(NouvellePos As Long)
mciSendStringA "seek " & AliasToUse & " to " & NouvellePos, 0, 0, 0
End Sub
'=======================================
'couper / remettre le son :
Sub CoupeSonMM(Oui As Boolean)
Select Case Oui
Case True
mciSendStringA "set " & AliasToUse & " audio all off", 0, 0, 0
Case Fasle
mciSendStringA "set " & AliasToUse & " audio all on", 0, 0, 0
End Select
End Sub
'=======================================
'récuperer la hauteur et la largeur de la vidéo :
Sub RetTailleMM()
Dim MaxXY As String * 128
Dim MaxXY2 As String
Call mciSendStringA("where " & AliasToUse & " destination", MaxXY, 128, 0)
MaxXY2 = Left(TDur, InStr(1, MaxXY, Chr$(0)) - 1)
MaxXY2 = Trim(MaxXY2)
If Len(MaxXY2) > 1 Then
p1 = InStrRev(MaxXY2, " ")
VidHeight = Val(Mid(MaxXY2, p1 + 1))
p2 = InStrRev(MaxXY2, " ", p1 - 1)
VidWidth = Val(Mid(MaxXY2, p2 + 1, p1 - p2 - 1))
End If
End Sub
'=======================================
'redimensionner la fenêtre (zoom, stretch)
Sub RedimensionneMM(NouvLarg As Long, NouvHaut As Long)
st$ = NouvLarg & " " & NouvHaut
mciSendStringA "put " & AliasToUse & " window at 0 0 " & st$, 0, 0, 0
mciSendStringA "put " & AliasToUse & " destination at 0 0 " & st$, 0, 0, 0
End Sub
'=======================================
'regler la vitesse de lecture (1000 = vitesse 1x, 500 = 0.5x)
Sub VitesseMM(NouveauFacteur As Long)
mciSendStringA "set " & AliasToUse & " speed " & NouveauFacteur, 0, 0, 0
End Sub
'=======================================
'regler le volume interne (et non de windows)
'(1000 = nominal, 500 = 2 fois moins fort)
Sub VolumeMM(NouveauFacteur As Long)
mciSendStringA "setaudio " & AliasToUse & " volume to " & NouveauFacteur, 0, 0, 0
End Sub
Conclusion
MISE A JOUR : - réglage du volume interne et non windows wave - réglage de la vitesse de lecture. - capture une image de la vidéo (ça ne marche pas tout le temps, pourtant la théorie est bonne) - regarder le readme.txt dans le zip pour le détail des fonctionnalités. - autodétermination du vrai format du fichier - resize de la fenêtre vidéo! soit vous gardez les proportions, soit vous l'étirer sur toute la form. Attention, les fichiers types divx semble ne pas appréçier l'opération. - progressbar 100% débogué - une information détaillé sur le codec en cours - la progressbar change de couleur au fur et a mesure de la progression (a vous de décider la couleur initiale et finale!) - erreur division par zéro et autres lorsque le fichier vidéo est corrompu > fixé BOGUES : - aucun connu.
La vidéo du screenshot n'est pas dans le zip ;)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
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 Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.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 LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|