|
begin process at 2008 07 18 20:04:36
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
DIRECTX TUTO 7 : DIRECTSHOW, JOUER DES MP3/OGG
Information sur la source
Description
****** JE CONSIDÈRE QUE VOUS AVEZ LES CONNAISSANCES PRÉSENTES DANS MES PRÉCÉDENTS TUTORIAUX ****** Chose promis chose due, je vous avez promis un tuto sur la lecture du mp3, ceci est fait ... D'abord qu'est-ce que DirectShow, on pourrait penser que DirectShow et comme pour DirectDraw dans la librairie DirectX, mais en faîte DirectShow est dans Active Movie, seulement si on cherche un peu plus Active Movie se sert de DirectX. Donc pour nous ce qui changera sera qu'il faut mettre dans les références du projet :Active Movie control type library Voilà maintenant il ne reste plus qu'à coder pour qu'on puisse lire les MP3...
Source
- Option Explicit
-
- Public DSAudio As IBasicAudio 'IBasicAudio permet d'avoir accès à la création de filtre
- Public DSevent As IMediaEvent 'IMediaEvent permet d'accéder aux événements sur un filtre
- Public DScontrol As IMediaControl 'IMediaControl permet d'avoir accès au flux de donner passant par un filtre
- Public IPosition As IMediaPosition 'IMediaPosition permet d'accéder à la position d'un fichier lu par un filtre
-
- 'Chargement d'un fichier en memoire
- Public Function LoadMp3Ogg(ByRef path As String, _
- ByRef DSAudio As IBasicAudio, ByRef SEvent As IMediaEvent, _
- ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
-
- If path <> "" Then
- Set Control = New FilgraphManager ' Initialisation de DirectShow, Filgraphmanager étant un contrôle qui permet d'avoir accède au filtre présent sur un PC
- Control.RenderFile path ' La méthode RenderFile cré un filtre qui permet de rendre un fichier.
-
- Set DSAudio = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
-
- Set SEvent = Control ' On donne accès à DScontrol aux événements des filtres
- Set Position = Control ' De même pour la position
- End If
-
- End Function
-
- 'Joue le fichier
- Public Function PlayMp3Ogg(ByRef Control As IMediaControl, Position As IMediaPosition)
-
- Control.Stop ' Arret de la lecture
- Position.CurrentPosition = 0 ' Remise à 0
- Control.Run ' Joue le fichier
-
- End Function
-
- 'Stop entierement la lecture
- Public Function StopMp3Ogg(ByRef Control As IMediaControl, Position As IMediaPosition)
-
- Control.Stop ' Arret de la lecture
- Position.CurrentPosition = 0 ' Remise à 0
-
- End Function
-
- 'Met sur pause
- Public Function PauseMp3Ogg(ByRef Control As IMediaControl)
-
- Control.Pause ' Mise en pause
-
- End Function
-
- 'Reprise de lecture apres la pause ou de la definission de position
- Public Function ReStartMp3Ogg(ByRef Control As IMediaControl)
-
- Control.Run 'Lancement apres une pause ou une definition de position
-
- End Function
-
- 'Definition du volume de 0 à 10
- Public Function SetVolume(ByRef Audio As IBasicAudio, VolumeValue As Integer)
-
- Audio.Volume = VolumeValue * -500 ' On multiplie par -500 car le volume va de -10000 à 0
-
- End Function
-
- 'Définition de la balance, gauche-droite, de -10 à 10
- Public Function SetBalance(ByRef Audio As IBasicAudio, BalanceValue As Integer)
-
- Audio.Balance = BalanceValue * 1000 ' On multiplie par 1000 car la balance va de -10000 à 10000
-
- End Function
-
- 'Définition de la vitesse de lecture de 1 à 20, 10 est la vitesse normal
- Public Function SetPlayRate(ByRef Position As IMediaPosition, PlayRate As Integer)
-
- Position.Rate = PlayRate * 0.1 ' Le PlayRate vas de 0.1 à 2, 1 étant la vitesse normal
-
- End Function
-
- 'Définition de la position de départ de 0 à 100%
- Public Function SetStartPosition(Control As IMediaControl, Position As IMediaPosition, _
- PositionValue As Integer)
-
- Control.Stop ' Arret de la lecture
- Position.CurrentPosition = (PositionValue * Position.Duration) / 100 ' Calcul pour mettre la position de lecture par rapport au pourcentage
-
- End Function
-
- 'Suppression du fichier en memoire
- Public Function DeleteMp3Ogg(ByRef DSAudio As IBasicAudio, ByRef SEvent As IMediaEvent, _
- ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
-
- Control.Stop ' Arrête la lecture
- Set DSAudio = Nothing ' Vide la mémoire
- Set Control = Nothing ' Vide la mémoire
- Set SEvent = Nothing ' Vide la mémoire
- Set Position = Nothing ' Vide la mémoire
-
- End Function
Option Explicit
Public DSAudio As IBasicAudio 'IBasicAudio permet d'avoir accès à la création de filtre
Public DSevent As IMediaEvent 'IMediaEvent permet d'accéder aux événements sur un filtre
Public DScontrol As IMediaControl 'IMediaControl permet d'avoir accès au flux de donner passant par un filtre
Public IPosition As IMediaPosition 'IMediaPosition permet d'accéder à la position d'un fichier lu par un filtre
'Chargement d'un fichier en memoire
Public Function LoadMp3Ogg(ByRef path As String, _
ByRef DSAudio As IBasicAudio, ByRef SEvent As IMediaEvent, _
ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
If path <> "" Then
Set Control = New FilgraphManager ' Initialisation de DirectShow, Filgraphmanager étant un contrôle qui permet d'avoir accède au filtre présent sur un PC
Control.RenderFile path ' La méthode RenderFile cré un filtre qui permet de rendre un fichier.
Set DSAudio = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
Set SEvent = Control ' On donne accès à DScontrol aux événements des filtres
Set Position = Control ' De même pour la position
End If
End Function
'Joue le fichier
Public Function PlayMp3Ogg(ByRef Control As IMediaControl, Position As IMediaPosition)
Control.Stop ' Arret de la lecture
Position.CurrentPosition = 0 ' Remise à 0
Control.Run ' Joue le fichier
End Function
'Stop entierement la lecture
Public Function StopMp3Ogg(ByRef Control As IMediaControl, Position As IMediaPosition)
Control.Stop ' Arret de la lecture
Position.CurrentPosition = 0 ' Remise à 0
End Function
'Met sur pause
Public Function PauseMp3Ogg(ByRef Control As IMediaControl)
Control.Pause ' Mise en pause
End Function
'Reprise de lecture apres la pause ou de la definission de position
Public Function ReStartMp3Ogg(ByRef Control As IMediaControl)
Control.Run 'Lancement apres une pause ou une definition de position
End Function
'Definition du volume de 0 à 10
Public Function SetVolume(ByRef Audio As IBasicAudio, VolumeValue As Integer)
Audio.Volume = VolumeValue * -500 ' On multiplie par -500 car le volume va de -10000 à 0
End Function
'Définition de la balance, gauche-droite, de -10 à 10
Public Function SetBalance(ByRef Audio As IBasicAudio, BalanceValue As Integer)
Audio.Balance = BalanceValue * 1000 ' On multiplie par 1000 car la balance va de -10000 à 10000
End Function
'Définition de la vitesse de lecture de 1 à 20, 10 est la vitesse normal
Public Function SetPlayRate(ByRef Position As IMediaPosition, PlayRate As Integer)
Position.Rate = PlayRate * 0.1 ' Le PlayRate vas de 0.1 à 2, 1 étant la vitesse normal
End Function
'Définition de la position de départ de 0 à 100%
Public Function SetStartPosition(Control As IMediaControl, Position As IMediaPosition, _
PositionValue As Integer)
Control.Stop ' Arret de la lecture
Position.CurrentPosition = (PositionValue * Position.Duration) / 100 ' Calcul pour mettre la position de lecture par rapport au pourcentage
End Function
'Suppression du fichier en memoire
Public Function DeleteMp3Ogg(ByRef DSAudio As IBasicAudio, ByRef SEvent As IMediaEvent, _
ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
Control.Stop ' Arrête la lecture
Set DSAudio = Nothing ' Vide la mémoire
Set Control = Nothing ' Vide la mémoire
Set SEvent = Nothing ' Vide la mémoire
Set Position = Nothing ' Vide la mémoire
End Function
Conclusion
Pour avoir un exemple concret allé voir dans le zip, j'utilise tous se qui à était dis ci-dessus.
Bon code
Et bien sûr tous les commentaires sont les biens venus.
a+
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 29 mai 2007 00:01:29 :
- Complete réécriture du tuto et du zip, ajout de fonction : volume, valance, playrate, position de lecture
- 31 mai 2007 01:07:51 :
- Correction sur le scroll bar permettant de modifier la position de depart.
Le scroll bar de position est maintenant mis à jour lors de la lecture.
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|