OVH Cloud OVH Cloud

Lecture fichier mpeg

16 réponses
Avatar
Noegor
Bonsoir,
J'essaie de développer un petit dossier amusant dans lequel pour chaque jour
du calendrier j'affiche une photo, j'écoute de la musique ou je visionne un
petit film.
Pour la manipulation des images, grâce à JB ça fonctionne à merveille. Pour
la musique merci à MP, c'est exactement ce qu'il me fallait. Mais pour le
film, je n'ai rien trouvé!... en désepoir de cause j'ai tenté d'utliser la
macro de Denis Michon qui lance le lecteur média par défaut. J'arrive à voir
le film jusqu'au bout, mais ça se termine mal!.. Je suis tout près du
but...Il suffirait de quelques lignes de code mais j'en suis encore bien
incapable...
D'avance merci.
Noégor

6 réponses

1 2
Avatar
Noegor
Bonjour Michel,
Dans une réponse à Modeste j'ai cru trouver la solution à mon problème mais
j'ai dû rater une marche.
Voici ce que vous proposez :

Tu peux aussi utiliser un truc très simple en appellant la procédure
ci-dessous avec le nom complet du fichier à lire:
Sub VideoPlay(sFile$)
If Len(Dir(sFile)) Then Exit Sub
CreateObject("WMPlayer.OCX").openPlayer sFile
End Sub


J'ai donc essayé de l'appliquer de la façon suivante :

Sub LireFilm()
Dim sFile As String
sFile = "C:Mes Documentsaucland45.mpeg"
Call VideoPlay(sFile)
End Sub
Et ça coince...
Merci de votre indulgence et compréhension....
Noégor
"Michel Pierron" a écrit dans le message de
news:%
Bonjour Modeste;
Si tu souhaites utiliser tous ces paramètres, tu as la possibilité
d'emballer le composant WindowsMediaPlayer dans une application Internet
Explorer (la vitesse de lecture étant un paramètre intrinsèque du fichier
lu, il ne me paraît pas souhaitable de le modifier, mais bon...). Il vaut
mieux placer le composant WindowsMediaPlayer dans une fenêtre afin de
pouvoir fermer l'application secondaire quand on le désire sans devoir
fermer Excel.

Sub WinMediaPlayer()
Const sFile$ = "Ici le chemin complet du fichier multimedia"
With CreateObject("InternetExplorer.Application")
.MenuBar = 0: .Toolbar = 0: .AddressBar = 0
.StatusBar = 0: .Width = 350: .Height = 278
.Left = 96: .Top = 150: .Navigate "about:blank"
.Resizable = True
.document.Title = Dir(sFile)
.document.WriteLn "<html>"
.document.WriteLn "<head><title>Windows Media Player</title></head>"
.document.WriteLn "<body>"
.document.WriteLn "<OBJECT id=""VIDEO"" width=""320"" height=""240"""
.document.WriteLn "style=""position:absolute; left:0;top:0;"""
.document.WriteLn "CLASSID=""CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"""
.document.WriteLn "type=""application/x-oleobject"">"
.document.WriteLn "<PARAM NAME=""URL"" VALUE=""" & sFile & """>"
.document.WriteLn "<PARAM NAME=""SendPlayStateChangeEvents""
VALUE=""True"">"
.document.WriteLn "<PARAM NAME=""AutoStart"" VALUE=""True"">"
.document.WriteLn "<PARAM name=""uiMode"" value=""full"">"
.document.WriteLn "<PARAM NAME=""showControls"" VALUE=""1"">"
.document.WriteLn "<PARAM name=""PlayCount"" value=""1"">"
.document.WriteLn "</OBJECT></body></html>"
.Visible = True
End With
End Sub

Pour n'afficher que la vidéo, mettre le paramètre uiMode à "none"
Pour la boucle de lecture, modifier le paramètre PlayCount
Pour la vitesse, il faut introduire le paramètre Rate avec son paramètre
value:
1.0 pour vitesse normale
0.5 pour une vitesse 2 fois moindre
2.0 pour 2 fois plus vite, etc.

A+
MP

"Modeste" a écrit dans le message de news:

Bonsour® Michel Pierron avec ferveur ;o))) vous nous disiez :

Tu peux aussi utiliser un truc très simple en appellant la procédure
ci-dessous avec le nom complet du fichier à lire:
Sub VideoPlay(sFile$)
If Len(Dir(sFile)) Then Exit Sub
CreateObject("WMPlayer.OCX").openPlayer sFile
End Sub


Whouai...... !!!!!

mais comment passer les autres parametres :
- n'afficher que la vidéo,
- lecture en boucle ou nombre de boucle
- vitesse de lecture



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr









Avatar
Michel Pierron
Re Noegor;
Oui, c'est normal; il faut modifier
If Len(Dir(sFile)) Then Exit Sub en:
If Len(Dir(sFile)) = 0 Then Exit Sub

MP

"Noegor" a écrit dans le message de news:

Bonjour Michel,
Dans une réponse à Modeste j'ai cru trouver la solution à mon problème
mais

j'ai dû rater une marche.
Voici ce que vous proposez :

Tu peux aussi utiliser un truc très simple en appellant la procédure
ci-dessous avec le nom complet du fichier à lire:
Sub VideoPlay(sFile$)
If Len(Dir(sFile)) Then Exit Sub
CreateObject("WMPlayer.OCX").openPlayer sFile
End Sub


J'ai donc essayé de l'appliquer de la façon suivante :

Sub LireFilm()
Dim sFile As String
sFile = "C:Mes Documentsaucland45.mpeg"
Call VideoPlay(sFile)
End Sub
Et ça coince...
Merci de votre indulgence et compréhension....
Noégor
"Michel Pierron" a écrit dans le message de
news:%
Bonjour Modeste;
Si tu souhaites utiliser tous ces paramètres, tu as la possibilité
d'emballer le composant WindowsMediaPlayer dans une application Internet
Explorer (la vitesse de lecture étant un paramètre intrinsèque du
fichier


lu, il ne me paraît pas souhaitable de le modifier, mais bon...). Il
vaut


mieux placer le composant WindowsMediaPlayer dans une fenêtre afin de
pouvoir fermer l'application secondaire quand on le désire sans devoir
fermer Excel.

Sub WinMediaPlayer()
Const sFile$ = "Ici le chemin complet du fichier multimedia"
With CreateObject("InternetExplorer.Application")
.MenuBar = 0: .Toolbar = 0: .AddressBar = 0
.StatusBar = 0: .Width = 350: .Height = 278
.Left = 96: .Top = 150: .Navigate "about:blank"
.Resizable = True
.document.Title = Dir(sFile)
.document.WriteLn "<html>"
.document.WriteLn "<head><title>Windows Media Player</title></head>"
.document.WriteLn "<body>"
.document.WriteLn "<OBJECT id=""VIDEO"" width=""320"" height=""240"""
.document.WriteLn "style=""position:absolute; left:0;top:0;"""
.document.WriteLn
"CLASSID=""CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"""


.document.WriteLn "type=""application/x-oleobject"">"
.document.WriteLn "<PARAM NAME=""URL"" VALUE=""" & sFile & """>"
.document.WriteLn "<PARAM NAME=""SendPlayStateChangeEvents""
VALUE=""True"">"
.document.WriteLn "<PARAM NAME=""AutoStart"" VALUE=""True"">"
.document.WriteLn "<PARAM name=""uiMode"" value=""full"">"
.document.WriteLn "<PARAM NAME=""showControls"" VALUE=""1"">"
.document.WriteLn "<PARAM name=""PlayCount"" value=""1"">"
.document.WriteLn "</OBJECT></body></html>"
.Visible = True
End With
End Sub

Pour n'afficher que la vidéo, mettre le paramètre uiMode à "none"
Pour la boucle de lecture, modifier le paramètre PlayCount
Pour la vitesse, il faut introduire le paramètre Rate avec son paramètre
value:
1.0 pour vitesse normale
0.5 pour une vitesse 2 fois moindre
2.0 pour 2 fois plus vite, etc.

A+
MP

"Modeste" a écrit dans le message de news:

Bonsour® Michel Pierron avec ferveur ;o))) vous nous disiez :

Tu peux aussi utiliser un truc très simple en appellant la procédure
ci-dessous avec le nom complet du fichier à lire:
Sub VideoPlay(sFile$)
If Len(Dir(sFile)) Then Exit Sub
CreateObject("WMPlayer.OCX").openPlayer sFile
End Sub


Whouai...... !!!!!

mais comment passer les autres parametres :
- n'afficher que la vidéo,
- lecture en boucle ou nombre de boucle
- vitesse de lecture



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr













Avatar
Michel Pierron
Bonsoir Modeste;
3 boutons sur ta feuille (Play, Pause, Stop):

Option Explicit
Private midFile$, Clicked As Boolean
Private Declare Function mciSendString& Lib _
"winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand$, ByVal lpstrReturnString$ _
, ByVal uReturnLength&, ByVal hwndCallback&)

Sub MidiPlay()
If Clicked Then Exit Sub
midFile = Application.GetOpenFilename("Midi-files (*.mid),*.mid")
If Len(midFile) < 8 Then Exit Sub
Call Replay
End Sub

Private sub RePlay()
Call PlaySong(True)
Call Scrolling
End sub

Sub MidiStop()
Call PlaySong(False)
End Sub

Sub MidiPause()
If Not Clicked Then Exit Sub
Dim msg As String * 255
Static iPos As Long
Static nb As Integer
If nb Then
PlaySong True, iPos
Else
mciSendString "status MPFE position", msg, 255, 0
iPos = Str(msg)
mciSendString "Pause MPFE", 0, 0, 0
End If
nb = Not nb
End Sub

Private Sub PlaySong(Play As Boolean, Optional Reprise As Long = 0)
Clicked = Play
On Error Resume Next
Call mciSendString("Stop MPFE", 0&, 0, 0)
Call mciSendString("Close MPFE", 0&, 0, 0)
If Not Play Then Exit Sub
Call mciSendString("Open " & midFile & " Alias MPFE", 0&, 0, 0)
Call mciSendString("play MPFE from " & Reprise, 0&, 0, 0)
End Sub

Private Sub Scrolling()
Dim Start!, msg As String * 255
Do While Clicked
mciSendString "status MPFE mode", msg, 255, 0
If Left$(msg, 7) = "stopped" Then Exit Do
Start = Timer + 0.15
While Timer < Start: DoEvents: Wend
Loop
If Not Clicked Then Exit Sub
Clicked = False
MsgBox "Fini !", 64
Call Replay
End Sub

MP

"Modeste" a écrit dans le message de news:

Bonsour® Michel Pierron avec ferveur ;o))) vous nous disiez :

Il vaut mieux placer le composant WindowsMediaPlayer dans une fenêtre
afin


de
pouvoir fermer l'application secondaire quand on le désire sans devoir
fermer Excel.


Un grand merci Michel, c'était surtout pour ma culture...

Pour le fun, j'essaie tout ce qui est média à partir d'EXCEL.

en fait j'ai un souci similaire avec MCI pour lire un .MID en boucle
ou alors tester qu'il est fini ...

Public FileToPlay As String
Public Alias As String
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

Sub play_it()
'KPD-Team 1998 URL: http://www.allapi.net/
filetoplay = Application.GetOpenFilename("Midi-files (*.mid),*.mid")
If filetoplay <> False Then
'FileToPlay = "mid" & Int(Rnd() * 6) & ".mid"
Alias = Left$(FileToPlay, Len(FileToPlay) - 4)
R% = mciSendString("OPEN " + FileToPlay + " TYPE SEQUENCER ALIAS "
+

Alias, 0&, 0, 0)
R% = mciSendString("PLAY " + Alias + " FROM 0", 0&, 0, 0)
R% = mciSendString("CLOSE ANIMATION", 0&, 0, 0)
End if
End Sub

Sub Stop_It()
On Error GoTo fini
Alias = Left$(FileToPlay, Len(FileToPlay) - 4)
R% = mciSendString("OPEN " + FileToPlay + " TYPE SEQUENCER ALIAS " +
Alias, 0&, 0, 0)
R% = mciSendString&("STOP " + Alias, 0&, 0, 0)
R% = mciSendString&("CLOSE ANIMATION", 0&, 0, 0)
fini:
End Sub

;o)))


--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr






Avatar
Modeste
Bonsour® Michel Pierron avec ferveur ;o))) vous nous disiez :

Un grand M E R C I Michel...
je m'en suis sorti en utilisant seulement :
mciSendString "Status MPFE mode", msg, 255, 0
afin de relancer une lecture à la suite d'une autre...

(Excelabo/Gd_Matriochkas)

en fait grace à :
'KPD-Team 1998 URL: http://www.allapi.net/
je connaissais déja
mciSendString "Open " & midFile & " Alias MPFE", 0&, 0, 0
mciSendString "Play MPFE from " & Reprise, 0&, 0, 0
mciSendString "Stop MPFE", 0&, 0, 0
mciSendString "Close MPFE", 0&, 0, 0


j'ai découvert grace à toi :
mciSendString "Status MPFE position", msg, 255, 0
mciSendString "Pause MPFE", 0, 0, 0
mciSendString "Status MPFE mode", msg, 255, 0


Ou peut-on trouver une doc avec les différents parametres avec explications
et usages ???
(from , mode, position)





--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
Alain CROS
Bonjour,

Peut être ici.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_commands.asp

Alain CROS

"Modeste" a écrit dans le message de news: #

| Ou peut-on trouver une doc avec les différents parametres avec explications
| et usages ???
| (from , mode, position)
|
Avatar
Michel Pierron
Bonjour Modeste;
Les commandes MCI les plus utiles:

Command Description
----------------------------------------------------------------------------
-----------------------------------
Play Plays a file.
Pause Pauses playback, ready to start up again at any time.
Stop Stops a file-you need to seek to a position to
continue playback.
Seek Followed by a number, seeks to that position in the
file.
Status Mode Returns a string indicating what the file is doing
(Stopped / Paused / Playing / Ready).
Status Position Returns a number indicating the position through the file
that playback has reached.
Status Length Returns the length of the file and helps to put the number
returned from Status
Position into some meaningful context.
Close Closes the file and frees up the memory it
previously occupied.

MP

"Modeste" a écrit dans le message de news:
#
Bonsour® Michel Pierron avec ferveur ;o))) vous nous disiez :

Un grand M E R C I Michel...
je m'en suis sorti en utilisant seulement :
mciSendString "Status MPFE mode", msg, 255, 0
afin de relancer une lecture à la suite d'une autre...

(Excelabo/Gd_Matriochkas)

en fait grace à :
'KPD-Team 1998 URL: http://www.allapi.net/
je connaissais déja
mciSendString "Open " & midFile & " Alias MPFE", 0&, 0, 0
mciSendString "Play MPFE from " & Reprise, 0&, 0, 0
mciSendString "Stop MPFE", 0&, 0, 0
mciSendString "Close MPFE", 0&, 0, 0


j'ai découvert grace à toi :
mciSendString "Status MPFE position", msg, 255, 0
mciSendString "Pause MPFE", 0, 0, 0
mciSendString "Status MPFE mode", msg, 255, 0


Ou peut-on trouver une doc avec les différents parametres avec
explications

et usages ???
(from , mode, position)





--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





1 2