none
MediaElement ne marche pas sous WPF RRS feed

  • Question

  • Bonjour, 

    je viens d'essayer un truque pour jouer un son sous WPF quand la fenêtre de l'application se charge,  mais le son ne marche pas malgré  qu'il n'y a pas d'erreurs.

    voilà le morceau de code:

      private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                MediaElement monMedia = new MediaElement();
                monMedia.Source =  new Uri (@"d:\Pinky\Musique\gregtamain.mp3");
                monMedia.LoadedBehavior = MediaState.Play; //Play
    }
    Avez-vous une idée comment fixer ce problème ? :(


    DKF

    lundi 28 janvier 2013 10:59

Réponses

  • Bonjour,

    MediaElement est un contrôle tout comme un bouton ou une grille. Donc déclarez plutôt monMedia dans le XAML de votre fenêtre au lieu de le créer dans du code sans le metttre en relation avec une fenêtre.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera mardi 29 janvier 2013 15:01
    lundi 28 janvier 2013 12:21
    Modérateur
  • La ligne MediaElement monMedia=new MediaElement() a bien totalement disparue ?

    J'ai testé chez moi et cela fonctionne. Vous dites avoir essayé sur une autre machine mais vous ne dites pas si cela marche ou non sur cette autre machine ?

    Eventuellement que donne une erreur volontaire dans le chemin du fichier ? (pour vérifier que l'exception est bien gérée)

    A titre d'information, le XAML contient donc par exemple :

    <MediaElement Name="monMedia" MediaFailed="monMedia_MediaFailed"/>

    Et le code est juste :

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                monMedia.Source = new Uri(@"f:\Music\Chilled_By_Nature_Musical_Box.mp3");
            }
            private void monMedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
            {
                MessageBox.Show(e.ErrorException.ToString());
            }
    


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    lundi 28 janvier 2013 16:35
    Modérateur
  • Tu doit aussi passé la propriété LoadedBehavior à manual 

    LoadedBehavior="Manual"

    • Marqué comme réponse pink192y mardi 29 janvier 2013 15:08
    lundi 28 janvier 2013 19:34
  • Bonjour, 

    J'ai supprimé la ligne:

    MediaElement monMedia=new MediaElement();
      et j'ai changé:
    LoadedBehavior="Manual"
    mon morceau de code et le suivant:


     private void Window_Loaded(object sender, RoutedEventArgs e)
            {
               
                //kinectSensorChooser1.KinectSensorChanged += new DependencyPropertyChangedEventHandler(kinectSensorChooser1_KinectSensorChanged);
                monMedia.Source = new Uri(@"d:\Pinky\Musique\ox\halo.mp3");
                monMedia.LoadedBehavior = MediaState.Play;  //Play
                monMedia.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(monMedia_MediaFailed);
                           
            }
            private void monMedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
            {
                MessageBox.Show(e.ErrorException.ToString());
            }
    

    si je mets un faux chemin d'accès un message d'erreur s'affiche.

    mais toujours le même problème pas de son que se soit .mp3 ou .wav :'(

    Pour l'autre machine j'avais accès seulement par team viewer et ça n'a pas marché. 

    je vais mettre à jours ma version de wmp  et voir encore. 

    Merci pour vos aides


    DKF

    • Marqué comme réponse pink192y mardi 29 janvier 2013 15:08
    mardi 29 janvier 2013 13:57
  • c'est bon ça marche enfin :)

    j'ai mis à jours wmp et j'ai copié les fichiers son directement sur le c:

    ça marche bien.

    Merci encore ^^


    DKF



    • Marqué comme réponse pink192y mardi 29 janvier 2013 14:59
    • Modifié pink192y mardi 29 janvier 2013 15:10
    mardi 29 janvier 2013 14:21

Toutes les réponses

  • Bonjour,

    MediaElement est un contrôle tout comme un bouton ou une grille. Donc déclarez plutôt monMedia dans le XAML de votre fenêtre au lieu de le créer dans du code sans le metttre en relation avec une fenêtre.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera mardi 29 janvier 2013 15:01
    lundi 28 janvier 2013 12:21
    Modérateur
  • Afin qu'on puisse voir l'erreur ajout l'événement MediaFailed:

     monMedia.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(monMedia_MediaFailed);

    ensuite ajoute la fonction dans ton code:

    void monMedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
            {
                MessageBox.Show(e.ErrorException.Message);
            }

    j'anticipe et je pense que tu aura un message de ce genre :

    Windows Media Player version 10 ou ultérieure obligatoire.

    lundi 28 janvier 2013 12:30
  • Re-bonjour, 

    Merci à vous deux, 

    j'ai ajouté l'élèment MediaElement dans la fenêtre et j'ai ajouté la partie d'exception.

    Pas de message d'erreur mais toujours y a pas de son :( 

    j'ai essayé d'introduire cette partie dans Evt window loaded, windows closed et quand les frames vidéo se charge mais toujours le même résultat.

    Sachant que j'ai essayé le code sur ma machine et une autre machine avec wmp version 12.07.

    Peut être qu'il a des options a changer dans les propriétés du MediaElement Controle ??


    DKF

    lundi 28 janvier 2013 14:06
  • La ligne MediaElement monMedia=new MediaElement() a bien totalement disparue ?

    J'ai testé chez moi et cela fonctionne. Vous dites avoir essayé sur une autre machine mais vous ne dites pas si cela marche ou non sur cette autre machine ?

    Eventuellement que donne une erreur volontaire dans le chemin du fichier ? (pour vérifier que l'exception est bien gérée)

    A titre d'information, le XAML contient donc par exemple :

    <MediaElement Name="monMedia" MediaFailed="monMedia_MediaFailed"/>

    Et le code est juste :

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                monMedia.Source = new Uri(@"f:\Music\Chilled_By_Nature_Musical_Box.mp3");
            }
            private void monMedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
            {
                MessageBox.Show(e.ErrorException.ToString());
            }
    


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    lundi 28 janvier 2013 16:35
    Modérateur
  • Tu doit aussi passé la propriété LoadedBehavior à manual 

    LoadedBehavior="Manual"

    • Marqué comme réponse pink192y mardi 29 janvier 2013 15:08
    lundi 28 janvier 2013 19:34
  • Pour jouer les MP3 tu peut aussi utiliser le composant axWindowsMediaPlayer

    Voici un tuto sur du WPF

    Tuto

    mardi 29 janvier 2013 13:43
  • Bonjour, 

    J'ai supprimé la ligne:

    MediaElement monMedia=new MediaElement();
      et j'ai changé:
    LoadedBehavior="Manual"
    mon morceau de code et le suivant:


     private void Window_Loaded(object sender, RoutedEventArgs e)
            {
               
                //kinectSensorChooser1.KinectSensorChanged += new DependencyPropertyChangedEventHandler(kinectSensorChooser1_KinectSensorChanged);
                monMedia.Source = new Uri(@"d:\Pinky\Musique\ox\halo.mp3");
                monMedia.LoadedBehavior = MediaState.Play;  //Play
                monMedia.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(monMedia_MediaFailed);
                           
            }
            private void monMedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
            {
                MessageBox.Show(e.ErrorException.ToString());
            }
    

    si je mets un faux chemin d'accès un message d'erreur s'affiche.

    mais toujours le même problème pas de son que se soit .mp3 ou .wav :'(

    Pour l'autre machine j'avais accès seulement par team viewer et ça n'a pas marché. 

    je vais mettre à jours ma version de wmp  et voir encore. 

    Merci pour vos aides


    DKF

    • Marqué comme réponse pink192y mardi 29 janvier 2013 15:08
    mardi 29 janvier 2013 13:57
  • c'est bon ça marche enfin :)

    j'ai mis à jours wmp et j'ai copié les fichiers son directement sur le c:

    ça marche bien.

    Merci encore ^^


    DKF



    • Marqué comme réponse pink192y mardi 29 janvier 2013 14:59
    • Modifié pink192y mardi 29 janvier 2013 15:10
    mardi 29 janvier 2013 14:21
  • Bonjour

    Pouvez-vous partager la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires?

    Merci !


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 29 janvier 2013 15:03