OVH Cloud OVH Cloud

WindowsMediaPlayer 10

6 réponses
Avatar
Pascal
Bonjour,
visiblement on ne peut pas utiliser l'évenement EndOfStream du
WindowsMediaPlayer 10, il ne réagit pas??????????

Question : Comment palier à cela?

Merci de toutes idées

Pascal

6 réponses

Avatar
Picalausa François
Hello,

Pour déterminer la fin d'un fichier multimedia, tu peux employer l'événement
PlayStateChange comme ceci:
Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = WMPPlayState.wmppsStopped Or NewState =
WMPPlayState.wmppsMediaEnded Then
'blah blah blah
End If
End Sub

D'autres états sont possibles.
Pour réaliser une playlist complète, il est aussi possible d'utiliser
mediaplayer directement:
WindowsMediaPlayer1.currentPlaylist.appendItem
WindowsMediaPlayer1.newMedia("c:...file.mp3")

Pour NOTIFY dans le cadre de MCI, il faut sousclasser une fenêtre. En
cherchant pour sousclassement dans googlegroups, tu devrais pouvoir trouver
des exemples. Ce n'est cependant pas très simple à réaliser.
Je ne sais pas si tu as essayé le Microsoft Multimedia Control (MCI32.OCX)
qui est en fait la version "VBisée" des fonctions mci.

Pour Directshow, un exemple est fournit dans le directx sdk version 8 (je ne
connais pas les SDK suivants) dans le sous dossier
samplesMultimediaVBSamplesDirectShowVBDemo

Courage!

--
Picalausa François

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

Bonjour,
visiblement on ne peut pas utiliser l'évenement EndOfStream du
WindowsMediaPlayer 10, il ne réagit pas??????????

Question : Comment palier à cela?


Avatar
Jacques93
Bonsoir Pascal,
Pascal a écrit :
Bonjour,
visiblement on ne peut pas utiliser l'évenement EndOfStream du
WindowsMediaPlayer 10, il ne réagit pas??????????

Question : Comment palier à cela?




Tu peux essayer :

MediaPlayer1 correspondant au contrôle msdmxm.ocx
et
WindowsMediaPlayer1 au contrôle wmp.dll (look wmp10)



Option Explicit

Private Sub Command1_Click()
With Me.MediaPlayer1
.Open "C:Toto.mp3"
End With
End Sub

Private Sub MediaPlayer1_EndOfStream(ByVal Result As Long)
MsgBox "MediaPlayerEnfOfStream - Fin"
End Sub

Private Sub Command2_Click()
With Me.WindowsMediaPlayer1
.URL = "C:Toto.mp3"
.Controls.play
End With
End Sub


Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState <= wmppsStopped Then
MsgBox "WindowsMediaPlayer1_PlayStateChange - Fin"
End If
End Sub


et Noyeux Joël !!! en musique :-D
--
Cordialement,

Jacques.
Avatar
Pascal
Aouhhhhhhhh c'est la fête au village beau cadeau de Noêl
merci à vous deux
passez de bonnes fêtes
Pascal
Avatar
Pascal
Bonsoir ,
suis navré de vous embêter avec cela une nouvelle fois
dans le code qui suit si je fais wmppsstopped et que je me crée un bouton
STOP le code fonctionne à merveille
par contre uniquement wmppsMediaEnded la fin de lecture est détectée mais
impossible de sortir un son par contre ma listview est rafraichie sans
cesse!!

merci d'avance

Pascal


Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = WMPPlayState.wmppsMediaEnded Then ' Or NewState WMPPlayState.wmppsStopped Then

With Me.LstPlaylist
'si on arrive au dernier item de la playlist
If .ListIndex = .ListCount - 1 Then
Me.lbltitre = MsgBienvenue
MsgBox "je suis a la fin de la liste, index = " & .ListIndex &
" sur " & .ListCount - 1 'test
'si option liste en continu à été choisit, on la relit
If Me.OptLireContinu = True Then
'revenir au premier item de la playlist
.ListIndex = 0
Me.WindowsMediaPlayer1.URL = .List(.ListIndex)
Me.WindowsMediaPlayer1.Controls.play
'défilement du titre
LongueurDuTitre
cmdpause.Tag = 0
End If
Else
'si pas arriver en fin de liste on continue
MsgBox "je passe au suivant, index = " & .ListIndex & " sur "
& .ListCount - 1 'test
.ListIndex = .ListIndex + 1
Me.WindowsMediaPlayer1.URL = .List(.ListIndex)
Me.WindowsMediaPlayer1.Controls.play

'défilement du titre
LongueurDuTitre
cmdpause.Tag = 0
End If
End With
End If
End Sub
"Picalausa François" a écrit dans le message de news:
#wgjDz$
Hello,

Pour déterminer la fin d'un fichier multimedia, tu peux employer


l'événement
PlayStateChange comme ceci:
Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = WMPPlayState.wmppsStopped Or NewState > WMPPlayState.wmppsMediaEnded Then
'blah blah blah
End If
End Sub

D'autres états sont possibles.
Pour réaliser une playlist complète, il est aussi possible d'utiliser
mediaplayer directement:
WindowsMediaPlayer1.currentPlaylist.appendItem
WindowsMediaPlayer1.newMedia("c:...file.mp3")

Pour NOTIFY dans le cadre de MCI, il faut sousclasser une fenêtre. En
cherchant pour sousclassement dans googlegroups, tu devrais pouvoir


trouver
des exemples. Ce n'est cependant pas très simple à réaliser.
Je ne sais pas si tu as essayé le Microsoft Multimedia Control (MCI32.OCX)
qui est en fait la version "VBisée" des fonctions mci.

Pour Directshow, un exemple est fournit dans le directx sdk version 8 (je


ne
connais pas les SDK suivants) dans le sous dossier
samplesMultimediaVBSamplesDirectShowVBDemo

Courage!

--
Picalausa François

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

> Bonjour,
> visiblement on ne peut pas utiliser l'évenement EndOfStream du
> WindowsMediaPlayer 10, il ne réagit pas??????????
>
> Question : Comment palier à cela?




Avatar
Picalausa François
Hello,

Ma compréhension du problème est que MediaEnded indique la fin de
l'élément... encore faut il que le lecteur s'arrête, load le track suivant
et le joue. En intercallant la lecture après media ended, on détecte la fin
du media, on en commence un autre, on s'arrête et... plus de track à jouer.
Pour palier à ce problème, on peut passer par les playlists mediaplayer:

L'exemple suivant présent cette technique. Il se base sur trois contrôles:
WindowsMediaPlayer1 : Contrôle Windows Media Player
lstPlayList : Contrôle Listbox
chkLoop : Contrôle Checkbox, Caption = "Répétition"

Le code pour la form contenant ces contrôles est le suivant:

Option Explicit

Public Sub MediaPlay()
WindowsMediaPlayer1.Controls.Play
End Sub

Public Sub MediaStop()
WindowsMediaPlayer1.Controls.stop
End Sub

Public Sub Play(TrackIndex As Long)
WindowsMediaPlayer1.Controls.playItem
WindowsMediaPlayer1.currentPlaylist.Item(TrackIndex)
End Sub

Private Sub lstPlaylist_DblClick()
'Si on a double cliqué sur un élément de playlist, le jouer
If lstPlayList.ListIndex > -1 Then
Play lstPlayList.ListIndex
End If
End Sub

Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As
Integer, Shift As Integer, X As Single, Y As Single)
'Pour ajouter des fichiers à la playlist
WindowsMediaPlayer1.currentPlaylist.appendItem
WindowsMediaPlayer1.newMedia(Data.Files(1))
End Sub

Private Sub WindowsMediaPlayer1_PlaylistChange(ByVal Playlist As Object,
ByVal change As WMPLibCtl.WMPPlaylistChangeEventType)
'Update toute la liste
'On peut trouver plus subtil (notament lorsqu'il s'agit uniquement de
bouger un élément dans la playlist)
'Voir le WMPPlaylistChangeEventType
Dim i As Long

lstPlayList.Clear

If WindowsMediaPlayer1.currentPlaylist.isIdentical(Playlist) Then
For i = 0 To Playlist.Count - 1
If
Playlist.Item(i).isIdentical(WindowsMediaPlayer1.currentMedia) Then
lstPlayList.AddItem "+ " & Playlist.Item(i).Name
lstPlayList.ListIndex = i
Else
lstPlayList.AddItem Playlist.Item(i).Name
End If
Next
End If
End Sub

Private Sub chkLoop_Click()
WindowsMediaPlayer1.settings.setMode "loop", chkLoop.Value = vbChecked
End Sub

Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = WMPPlayState.wmppsPlaying Then
'Sassure d'afficher le + là où il faut
'A optimiser!
Dim i As Long

For i = 0 To lstPlayList.ListCount - 1
If
WindowsMediaPlayer1.currentPlaylist.Item(i).isIdentical(WindowsMediaPlayer1.Controls.currentItem)
Then
lstPlayList.List(i) = "+ " &
WindowsMediaPlayer1.currentPlaylist.Item(i).Name
lstPlayList.ListIndex = i
Else
lstPlayList.List(i) =
WindowsMediaPlayer1.currentPlaylist.Item(i).Name
End If
Next i
End If
End Sub

--
Picalausa François

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

Bonsoir ,
suis navré de vous embêter avec cela une nouvelle fois
dans le code qui suit si je fais wmppsstopped et que je me crée un bouton
STOP le code fonctionne à merveille
par contre uniquement wmppsMediaEnded la fin de lecture est détectée mais
impossible de sortir un son par contre ma listview est rafraichie sans
cesse!!

<code>
"Picalausa François" a écrit dans le message de
news:
#wgjDz$
Pour réaliser une playlist complète, il est aussi possible d'utiliser
mediaplayer directement:
WindowsMediaPlayer1.currentPlaylist.appendItem
WindowsMediaPlayer1.newMedia("c:...file.mp3")

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

> visiblement on ne peut pas utiliser l'évenement EndOfStream du
> WindowsMediaPlayer 10, il ne réagit pas??????????
>
> Question : Comment palier à cela?




Avatar
Pascal
Hello,
Tu viens de me fournir la preuve que le père Noêl existait, comme quoi il ne
faut jamais perdre espoir
Je ne m'attendais pas à ce que tu me l'écrives, merci pour ce joli cadeau

Cordialement

Pascal


"Picalausa François" a écrit dans le message de news:

Hello,

Ma compréhension du problème est que MediaEnded indique la fin de
l'élément... encore faut il que le lecteur s'arrête, load le track suivant
et le joue. En intercallant la lecture après media ended, on détecte la


fin
du media, on en commence un autre, on s'arrête et... plus de track à


jouer.
Pour palier à ce problème, on peut passer par les playlists mediaplayer:

L'exemple suivant présent cette technique. Il se base sur trois contrôles:
WindowsMediaPlayer1 : Contrôle Windows Media Player
lstPlayList : Contrôle Listbox
chkLoop : Contrôle Checkbox, Caption = "Répétition"

Le code pour la form contenant ces contrôles est le suivant:

Option Explicit

Public Sub MediaPlay()
WindowsMediaPlayer1.Controls.Play
End Sub

Public Sub MediaStop()
WindowsMediaPlayer1.Controls.stop
End Sub

Public Sub Play(TrackIndex As Long)
WindowsMediaPlayer1.Controls.playItem
WindowsMediaPlayer1.currentPlaylist.Item(TrackIndex)
End Sub

Private Sub lstPlaylist_DblClick()
'Si on a double cliqué sur un élément de playlist, le jouer
If lstPlayList.ListIndex > -1 Then
Play lstPlayList.ListIndex
End If
End Sub

Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As
Integer, Shift As Integer, X As Single, Y As Single)
'Pour ajouter des fichiers à la playlist
WindowsMediaPlayer1.currentPlaylist.appendItem
WindowsMediaPlayer1.newMedia(Data.Files(1))
End Sub

Private Sub WindowsMediaPlayer1_PlaylistChange(ByVal Playlist As Object,
ByVal change As WMPLibCtl.WMPPlaylistChangeEventType)
'Update toute la liste
'On peut trouver plus subtil (notament lorsqu'il s'agit uniquement de
bouger un élément dans la playlist)
'Voir le WMPPlaylistChangeEventType
Dim i As Long

lstPlayList.Clear

If WindowsMediaPlayer1.currentPlaylist.isIdentical(Playlist) Then
For i = 0 To Playlist.Count - 1
If
Playlist.Item(i).isIdentical(WindowsMediaPlayer1.currentMedia) Then
lstPlayList.AddItem "+ " & Playlist.Item(i).Name
lstPlayList.ListIndex = i
Else
lstPlayList.AddItem Playlist.Item(i).Name
End If
Next
End If
End Sub

Private Sub chkLoop_Click()
WindowsMediaPlayer1.settings.setMode "loop", chkLoop.Value = vbChecked
End Sub

Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = WMPPlayState.wmppsPlaying Then
'Sassure d'afficher le + là où il faut
'A optimiser!
Dim i As Long

For i = 0 To lstPlayList.ListCount - 1
If



WindowsMediaPlayer1.currentPlaylist.Item(i).isIdentical(WindowsMediaPlayer1.
Controls.currentItem)
Then
lstPlayList.List(i) = "+ " &
WindowsMediaPlayer1.currentPlaylist.Item(i).Name
lstPlayList.ListIndex = i
Else
lstPlayList.List(i) > WindowsMediaPlayer1.currentPlaylist.Item(i).Name
End If
Next i
End If
End Sub

--
Picalausa François

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

> Bonsoir ,
> suis navré de vous embêter avec cela une nouvelle fois
> dans le code qui suit si je fais wmppsstopped et que je me crée un


bouton
> STOP le code fonctionne à merveille
> par contre uniquement wmppsMediaEnded la fin de lecture est détectée


mais
> impossible de sortir un son par contre ma listview est rafraichie sans
> cesse!!
>
> <code>
> "Picalausa François" a écrit dans le message de
> news:
> #wgjDz$
>> Pour réaliser une playlist complète, il est aussi possible d'utiliser
>> mediaplayer directement:
>> WindowsMediaPlayer1.currentPlaylist.appendItem
>> WindowsMediaPlayer1.newMedia("c:...file.mp3")
>>
>> "Pascal" a écrit dans le message de news:
>>
>> > visiblement on ne peut pas utiliser l'évenement EndOfStream du
>> > WindowsMediaPlayer 10, il ne réagit pas??????????
>> >
>> > Question : Comment palier à cela?