Accueil > Forum > > > > Répéter avec directshow
Répéter avec directshow
lundi 1 mai 2006 à 03:39:28 |
Répéter avec directshow

Ahweb
|
Salut ! J'utilise un module DirectShow pour lire des MP3, midids et WAV. Voici son code : ======================================== '========================================== ' ' NAME: modDirectShow.bas ' DESC: MP3 playing module for background music. ' ' AUTHOR: Jack Hoxley ' DATE: 29th July 2001 ' ' REQUIRES: Microsoft DirectX 8.0 Runtime libraries ' '==========================================
Option Explicit
'//DirectShow Objects Private DSAudio As IBasicAudio 'Basic Audio Objectt Private DSEvent As IMediaEvent 'MediaEvent Object Private DSControl As IMediaControl 'MediaControl Object Private DSPosition As IMediaPosition 'MediaPosition Object
Public Function TerminateEngine() As Boolean On Error GoTo BailOut:
If ObjPtr(DSControl) > 0 Then DSControl.Stop End If If ObjPtr(DSAudio) Then Set DSAudio = Nothing If ObjPtr(DSEvent) Then Set DSEvent = Nothing If ObjPtr(DSControl) Then Set DSControl = Nothing If ObjPtr(DSPosition) Then Set DSPosition = Nothing TerminateEngine = True Exit Function BailOut: TerminateEngine = False Debug.Print "ERROR: modDirectShow.TerminateEngine()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function LoadMP3(FileName As String) As Boolean On Error GoTo BailOut:
'//0. Any variables '//1. Destroy existing instances If Not (TerminateEngine() = True) Then GoTo BailOut: '//2. Setup a filter graph for the file Set DSControl = New FilgraphManager Call DSControl.RenderFile(FileName) '//3. Setup the basic audio object Set DSAudio = DSControl DSAudio.Volume = 0 DSAudio.Balance = 0 '//4. Setup the media event and position objects Set DSEvent = DSControl Set DSPosition = DSControl If ObjPtr(DSPosition) Then DSPosition.Rate = 1# DSPosition.CurrentPosition = 0 '//5. Done!
LoadMP3 = True Exit Function BailOut: LoadMP3 = False Debug.Print "ERROR: modDirectShow.LoadMP3()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function SetPlayBackSpeed(Speed As Single) As Boolean On Error GoTo BailOut:
If ObjPtr(DSPosition) > 0 Then DSPosition.Rate = Speed End If
SetPlayBackSpeed = True Exit Function BailOut: SetPlayBackSpeed = False Debug.Print "ERROR: modDirectShow.SetPlayBackSpeed()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function SetPlayBackVolume(Volume As Long) As Boolean On Error GoTo BailOut: '//Set the new volume If ObjPtr(DSControl) > 0 Then DSAudio.Volume = Volume * 40 ' makes it in the 0 to -4000 range (-4000 is almost silent) End If
SetPlayBackVolume = True Exit Function BailOut: SetPlayBackVolume = False Debug.Print "ERROR: modDirectShow.SetPlayBackVolume()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function SetPlayBackBalance(Balance As Long) As Boolean On Error GoTo BailOut:
If ObjPtr(DSControl) > 0 Then DSAudio.Balance = Balance End If
SetPlayBackBalance = True Exit Function BailOut: SetPlayBackBalance = False Debug.Print "ERROR: modDirectShow.SetPlayBackBalance()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function PlayMP3() As Boolean On Error GoTo BailOut:
DSControl.Run
PlayMP3 = True Exit Function BailOut: PlayMP3 = False Debug.Print "ERROR: modDirectShow.PlayMP3()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function StopMP3() As Boolean On Error GoTo BailOut: DSControl.Stop DSPosition.CurrentPosition = 0 'set it back to the beginning
StopMP3 = True Exit Function BailOut: StopMP3 = False Debug.Print "ERROR: modDirectShow.StopMP3()" Debug.Print " ", Err.Number, Err.Description End Function
Public Function PauseMP3() As Boolean On Error GoTo BailOut: DSControl.Stop
PauseMP3 = True Exit Function BailOut: PauseMP3 = False Debug.Print "ERROR: modDirectShow.PauseMP3()" Debug.Print " ", Err.Number, Err.Description End Function
===================================== ===J'aimerais maintenant que à la fin du morceau, il se répète automatiquement. Avez-vous une idée de comment mettre en oeuvre ceci ? Merci, Aweb
|
|
lundi 1 mai 2006 à 05:17:13 |
Re : Répéter avec directshow

PCPT
|
salut, avec ce module tel quel, tu ne peux pas. il te manque la fonction d'avancement (%) de la piste. sinon avec, beh juste un timer qui reload arrivé à 100
++
|
|
lundi 1 mai 2006 à 10:35:41 |
Re : Répéter avec directshow

Ahweb
|
C'est ce que j'ai fait mais n'y a t-il pas un autre moyen directement intégrable au module ?
Merci, Aweb
|
|
lundi 1 mai 2006 à 13:56:45 |
Re : Répéter avec directshow

PCPT
|
pas à ma connaissance : pas d'évènement.
|
|
lundi 1 mai 2006 à 14:41:03 |
Re : Répéter avec directshow

Ahweb
|
Voilà j'ai simplement utilisé le module de timer (utilisant settimer etc..) pour gérer tout ça sans form secondaire.
|
|
mercredi 24 janvier 2007 à 03:13:46 |
Re : Répéter avec directshow

gmni
|
Exacte avec un timer qui peut appeler cette situation dans le module :
If DSPosition.CurrentPosition = DSPosition.Duration Then StopMP3 PlayMP3 End If
-----------------
|
|
Cette discussion est classée dans : debug, error, print, err, dscontrol
Répondre à ce message
Sujets en rapport avec ce message
URGENT : changement d'imprimante depuis VB :°-( [ par I need your help ! ]
Bonjour à tous,Voici ma question : comment changer l'imprimante par défaut depuis un programme VB ? :-)En créant manuellement une imprimante "Virtua
Excel: Pb avec SolverOptions depuis passage Office2002 [ par webcyril ]
Hello, J'utilise le solveur Excel pour résoudre des équations. Le code VBA/Excel ci-dessous fonctionne très bien sous Offfice97/NT4 mais ne fonctionne
VBA Excel, retour de fonction incorrect (rajout de décimal) [ par SeB78480 ]
Bonjour!!!J'ai une question pour les fou de VBA sous Excel! :-)J'ai des fonctions qui me retourne une information bien précise en fonction des paramèt
lecture des donnéés dans un champ ole d'une base access [ par Romouts ]
Salut,Mon probléme est que j'ai des données dans un champ OLE dont j'ai défini le type mais je ne sais pas les dispatcher dans chacune des variables.
Debug.Print effacer fenetre Execution [ par salazar ]
Quelle est la commande à passer pour effacer le contenu de la fenetre execution, pour éviter de la faire à la main ?Merci.
Erreur 1067 sur Lancement service NT (VB6) [ par zephyrin ]
Bonjour,je suis sous 2000 et VB6.J'ai récupérer le code ci-dessous pour faire un service NT.L'isntallation et la désinstallation fonctionne, par contr
Attente d'une reponse d'une form [ par math67 ]
Bonjour, je débute en VB. ma question : j'ai une boucle while dans uen sub qui effectue une comparaison entre une cellule d'uen table excel et une feu
Attente d'une reponse de l'utilisateur sur une form [ par math67 ]
Bonjour, je débute en VB. ma question : j'ai une boucle while dans uen sub qui effectue une comparaison entre une cellule d'uen table excel et une feu
Références en VB6 [ par fvh4 ]
bonjour à tous,J'aurais besoin de récupérer par code toutes les références associées à un projet.J'ai fait une fonction qui marche parfaitement en Acc
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.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 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
|