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 !

Sujet : Répéter avec directshow [ Archives Visual Basic / Multimedia ] (Ahweb)

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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é 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


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,31 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.