kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008
-
29 janv. 2005 à 20:07
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008
-
4 févr. 2005 à 00:36
j'ai fai un lecteur multimedia qui lit tout les format son et video mais je me sert
dela nouvelle version de media player et j'ai quelque grosses dificulte
a enchaine les titres de mes musiques
j'utilise donc un timer avec ce code
Private Sub Timer_Timer()
On Error Resume Next
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
If Err.Number = 380 Then 'Dernière chanson de la playlist
LstMediaVisible.ListIndex = 0
End If
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True
CmdJouer.Value = True
End Sub
et le souci est que les enchainement marche mais que pour la dure du timer(10s)
alors que mormalent ca devrait etre etre a la fin du titre car j'utilise
cette phrase de code :
If media.Controls.media.CurrentPosition>= media.currentMedia.DurationThen
si quelqu'un pouvait m'aider ca serai tres sympa merci d'avance
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 29 janv. 2005 à 20:48
Private Sub Timer_Timer()
LblTpsMedia.Caption = Convert_Time(media.Controls.CurrentPosition) & "/" & Convert_Time(media.currentMedia.Duration)
If media.Controls.media.CurrentPosition < media.currentMedia.Duration Then Exit Sub
' LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True
CmdJouer.Value = True
End Sub
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008 29 janv. 2005 à 22:04
je suis desole mais sa ne marche pas soit sa lit j'usqua la fin est sa s'arrete ou alors
si je modifie
If media.Controls.media.CurrentPosition < media.currentMedia.Duration Then Exit Sub
en sa
If media.Controls.media.CurrentPosition <= media.currentMedia.Duration Then Exit Sub
sa me selectionne tout les titre un par un en gardant le precedant en selection est sa defile
par raport a l'interval du timer (100ms)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 29 janv. 2005 à 22:04
c'est parce que j'ai recopié la ligne bêtement sans savoir ce que c'était ...
au fait cette ligne doit être inutile aussi, si t'es pas en Multiselect, le fait de modifier Listindex sélectionne la Ligne en même temps:
' LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 29 janv. 2005 à 22:13
t'es sûr que ta méthode marche et qu'elle donne bien la position courante de la lecture en cours, parce que là je connais pas ?
media.Controls.media.CurrentPosition
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008 29 janv. 2005 à 22:29
ca ne marche pas avec le media 9
car le code me servai pour la version 4 et marchai mais la avec la nouvelle
version c'est un peut plus complique et c'est pour ca que je galere grave
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008 29 janv. 2005 à 22:31
si tu arrive a me sortir de cette "merde" si sa t'interesse je te passerai mon lecteur
une foi terminer tu vera si j'arrive a ce que je veu il est tres pratique est permer de lire tout les format
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 30 janv. 2005 à 00:07
pour le PlayState c'est pas impossible mais faudrait connaître les différentes valeurs ...
sinon il faut positionner la durée au moment du play:
durée =
media.currentMedia.duration
et ensuite tester dans le Timer:
If media.Controls.currentPosition < durée then Exit Sub
mais ce ne sera pas suffisant, parce que c'est pas sûr que la currentPosition atteigne la valeur maxi, ceci dépendant de l'interval du Timer, et on se retrouve alors avec une currentPosition égale à zéro, il faut tester avec une tolérance de quelques secondes, mais attention lorsque la liste est vide risque de plantage ...
If media.Controls.currentPosition > 0 and durée - media.Controls.currentPosition < 10 then Exit Sub
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008 30 janv. 2005 à 23:18
Private Sub LstMediaVisible_DblClick() 'un dblclick sur le titre selectionner permet sa lecture
CmdJouer.Value = True
End Sub
Private Sub Player_PlayStateChange(ByVal NewState As Long)
If (NewState = 1) Then
File1.ListIndex = fiel1.ListIndex + 1
Player.Controls.Play
End If
End Sub
Private Sub File1_Click() 'selection du fichier unclick le met dans la playlist
CmdOK.Value = True
End Sub
Private Sub Form_Load()
Chargement_Preferences
File1.Pattern = "*.mp3;*.wav;*.wma;*.avi;*.mpg;*.mpe;*.mpeg;*.divx;*.cda;*.vob"
End Sub
Public Function Convert_Time(v_DureeSeconde As Integer) As String
Dim v_sec As Integer
Dim v_min As Integer
v_min = Split(v_DureeSeconde / 60, ",")(0)
v_sec = v_DureeSeconde - (v_min * 60)
Convert_Time = v_min & ":" & v_sec
End Function
Public Function Suppr_Extension(v_chaine As String) As String
Suppr_Extension = Replace(v_chaine, Right(v_chaine, 4), "")
End Function
Public Function Suppr_Chemin(v_chaine As String) As String
Dim v_chemin As String
Dim v_trouve As Integer
ReDim TabNomMedia(Len(v_chaine))
j = 1
v_trouve = 0
Do
If Right(v_chaine, j) = ("" & v_chemin) Then Exit Do
v_chemin = Right(v_chaine, j)
j = j + 1
Loop
Suppr_Chemin = v_chemin
End Function
End Sub
Private Sub CmdJouer_Click() 'un click permet la lecture de la musique
Timer.Enabled = True
durée = media.currentMedia.Duration
LstMedia.ListIndex = LstMediaVisible.ListIndex
libelléfichier = (LstMedia.List(LstMediaVisible.ListIndex))
media.URL = libelléfichier If LCase(Right(LstMedia, 4)) ".avi" Or LCase(Right(LstMedia, 4)) ".mpg" Or LCase(Right(LstMedia, 4)) = ".mpe" Or LCase(Right(LstMedia, 5)) = ".mpeg" Or LCase(Right(LstMedia, 4)) = ".divx" Or LCase(Right(LstMedia, 5)) = ".cda" Then
Timer1.Enabled = True
End If
Form1.Caption = LstMediaVisible
NomMedia = Taille_Defilement_Text(LstMediaVisible)
TimerDefilement.Enabled = True
NbPassage = 0
i = 0
k = 0
'
End Sub
Private Sub LstMediaVisible_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
CmdClearSelect.Value = True
End If
If KeyCode = vbKeyR Then
CmdRetour.Value = True
End If
If KeyCode = vbKeyA Then
CmdAvance.Value = True
End If
End Sub
Private Sub Timer_Timer() ' permet d'enchainner les titres
durée = media.currentMedia.Duration
If media.Controls.CurrentPosition > 0 And durée - media.Controls.CurrentPosition < 10 Then Exit Sub
If media.PlayState <> 0 Then Exit Sub
If media.Controls.CurrentPosition < media.currentMedia.Duration Then Exit Sub
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
CmdJouer.Value = True
End Sub
Private Sub cmdOK_Click() 'envoi les titre du file1 a la paylist
On Error Resume Next
For i = 0 To File1.ListCount - 1
If File1.Selected(i) = True Then
CheminMedia = Dir1.Path & "" & File1.List(i)
LstMedia.AddItem CheminMedia
LstMediaVisible.AddItem Suppr_Chemin(Suppr_Extension(CheminMedia))
File1.Selected(i) = False
End If
Next i
LblNbFichier.Caption = LstMediaVisible.ListCount & " Fichier(s)"
End Sub
Private Sub Dir1_Change()
File1.FileName = Dir1.Path
End Sub
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 31 janv. 2005 à 00:56
dans CmdJouer_Click()
' protection si la Liste est vide
If LstMediaVisible.ListCount = 0 Then Exit Sub
LstMedia.ListIndex = LstMediaVisible.ListIndex
libelléfichier = (LstMedia.List(LstMediaVisible.ListIndex))
media.URL = libelléfichier
' on ne peut pas avoir la durée s'il n'y a pas de lecture en cours
' et en plus il faut attendre que le fichier soit pris en compte
While media.playState = 9: DoEvents: Wend
durée = media.currentMedia.duration
Timer.Enabled = True
Private Sub Timer_Timer()
' si lecture en cours on sort (finalement durée ne sert plus)
If media.Controls.currentPosition > 0 Then Exit Sub
' protection si liste vide
If LstMediaVisible.ListCount = 0 Then
durée = 0
Timer.Enabled = False
Exit Sub
End If
' passage à l'index suivant
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
CmdJouer.Value = True
kev900001
Messages postés119Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention 9 avril 2008 2 févr. 2005 à 17:57
en faite il y aun petit probleme je suis desole mais sa ne marche pas tres bien et malgre enple essai je n'arrive pas au resultat car quand je lance le lecteur il lit et enchaine les musique mais il lit celle qui precede la selection et en plus a chaque debut il charge la musique 2s et recharge la music pour la lire se qui fait un decalage
sinon j'ai peut etre trouver autre chose mais j'ai encore un souci c'est que lors de l'enchainemnt il saute un titre se qui fait que sa enchaine mais on a que un titre sur 2 de lu
voila mon code
et je n'utilse pas de timer
Private Sub media_PlayStateChange(ByVal NewState As Long)
If (NewState = 1) Then
file1.ListIndex = file1.ListIndex + 1
media.Controls.Play
libelléfichier = dir1.Path & "" & file1.List(file1.ListIndex)
media.URL = libelléfichier
End If
End Sub
bon c'est qu'un essai car je n'arrive pas ale faire fonctionner avec la playlist
merci
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 2 févr. 2005 à 18:06
<STRIKE>media.Controls.Play
</STRIKE>enlève ça déjà parce que ça relance la lecture précédente et le URL qui suit immédiatement après redéclanche une deuxième lecture