IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Activex Windows Media Player


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut Activex Windows Media Player
    Bonjour,
    Je voudrais utiliser le composant Windows Media Player de la façon suivante :

    Lecture partielle d'un média (vidéo en l'occurrence), d'un timecode jusqu'à un autre :
    J'arrive à positionner le lecteur sur une valeur en seconde et ensuite lire le média depuis cette position, avec la syntaxe suivante sous delphi :
    WindowsMediaPlayer1.controls.currentPosition:=Position (Position en secondes)
    Mais je ne sais pas comment arrêter la lecture à un moment précis.

    Après avoir parcouru la documentation Microsoft sur cet activex, et notamment dans la partie controls ou settings, ou bien évidemment parcouru ici même les discussions sur le sujet, je ne trouve pas de solution.

    Merci de votre aide.
    jpapou

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    indiquer la version de Delphi et au besoin nous faire savoirs s'il s'agit de VCL ou de FMX (même si je doute qu'il s'agisse de ce dernier) serait un plus

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Salut,

    Je n'utilise ni WMP ni Windows tout court, cependant je tenterais bien un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
      StopAt: integer; // ou autre, celui qui va bien
    begin
      // initialisations diverses
      StopAt := la_position_que_tu_veux;
      ...
      // Lancement
      WMP1.controls.currentPosition := Position; // (Position en secondes)
      while WMP1.Running do
        if WMP1.controls.currentPosition = StopAt then WMP1.Stop;
    end;
    Bon, tu as bien compris que c'est du pseudocode, mais c'est pour que tu voies l'idée.

    La chose qui me chagrine, par contre, c'est cette position en secondes, qui peut te faire louper ou te rajouter 23 images.
    Il n'existe pas une option de position plus précise, en images ?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Code à déporter éventuellement dans un thread, et plutôt avec une inégalité, au cas où.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    Il s'agit de la version XE7, et de l'unité ActiveX VCL TWindowsMediaPlayer 1.0

    Effectivement lancer un thread me parait logique, mais il va falloir trouver la syntaxe exacte du pseudo-code proposé, et notamment le WindowsMediaPlayer is Running.
    Je vous fais part de mes recherches et merci de vos réponses rapides.

  6. #6
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    Citation Envoyé par Jipété Voir le message
    La chose qui me chagrine, par contre, c'est cette position en secondes, qui peut te faire louper ou te rajouter 23 images.
    Il n'existe pas une option de position plus précise, en images ?
    J'ai vérifié et heureusement la propriété currentPosition est déclarée en Double, ce qui me permet de découper ma seconde en centièmes, et ensuite, pour les images entre la 20 et la 21ème seconde :
    20.04, 20.08, 20.12, ... ,20.92, 20.96, soit 25 images.

    Merci pour ta remarque Jipété

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Dans la classes Vcl.MPlayer.TMediaPlayer et sa propriété Mode, tu as le mpPlaying / mpStopped

    Essaye, j'ai pris une version du WMP que j'avais récupéré en C++Builder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WMP.ControlInterface.get_playState(); par héritages interfaces de WindowsMediaPlayer - IWMPPlayer4 > IWMPCore3 > IWMPCore2 > IWMPCore , cela devrait passer
    sinon voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Support(WMP.ControlInterface, IWMPCore, IntfWMPCore) then
      IntfWMPCore.get_playState()
    Cela te donnera une valeur de WMPPlayState : wmppsPlaying, wmppsStopped ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    Vos remarques m'ont donné l'idée (bonne ou pas ?) de procéder ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Wmp1.controls.currentPosition:=Position;
    Wmp1.controls.play;
    repeat
    Application.ProcessMessages;
    until Wmp1.controls.currentPosition > Fin;
    Wmp1.controls.pause;
    Le code fonctionne, mais je ne trouve pas ça très ... comment dire ? J'ai peur d'utiliser beaucoup de ressources en appelant ProcessMessages dans mon repeat until. J'obtiens néanmoins ce que je voulais.

    Merci de vos avis

  9. #9
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Citation Envoyé par jpapou Voir le message
    Le code fonctionne, mais je ne trouve pas ça très ... comment dire ? J'ai peur d'utiliser beaucoup de ressources en appelant ProcessMessages dans mon repeat until. J'obtiens néanmoins ce que je voulais.

    Merci de vos avis
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      i: int64;
    begin
    ...
      i := 0;
      repeat
        inc(i);
        if ((i mod 20) = 0) then // n'exécutera la suite que tous les 20 tours de boucle
          Application.ProcessMessages;
      until Wmp1.controls.currentPosition > Fin;
    Si tu trouves que ça ne rafraîchit pas assez vite, descends à 10.

  10. #10
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    Bonne idée le modulo dans la boucle, il ne me reste plus effectivement qu'à le régler.

    Merci Jipété, et merci à vous tous.

    Jpapou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ActiveX Windows media player popupmenu
    Par aliwassem dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/02/2010, 19h16
  2. Réponses: 0
    Dernier message: 15/01/2009, 19h50
  3. [MFC] ActiveX Windows Media Player
    Par Philippe320 dans le forum MFC
    Réponses: 0
    Dernier message: 24/11/2008, 10h44
  4. Problème avec l'ActiveX Windows Media Player
    Par sgttiti52 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 10/01/2008, 11h03
  5. Activex Windows Media Player
    Par FabienN dans le forum Access
    Réponses: 16
    Dernier message: 27/05/2006, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo