locked
Flux Audio RRS feed

  • Question

  • Salut, malgré les quelques sujets sur le streaming audio, je n'arrive pas à lire un fichier .mp3 stocké sur un site web avec un MediaElement.

    Voici mon code xaml.
    J'ai une listBox avec un dataTemplate 2 textBlock et une image.

    <ListBox x:Name="seqListBox" ItemsSource="{Binding podItems}" Height="Auto" Margin="12,6,-12,0" SelectionChanged="seq_SelectionChanged" VerticalAlignment="Top" HorizontalAlignment="Left" Width="450">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="100"/>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="280"/>
                                        <ColumnDefinition Width="170"/>
                                    </Grid.ColumnDefinitions>
                                
                                   <TextBlock Tap="music_Tap" Text="{Binding podtitle}" HorizontalAlignment="Left" Width="300" FontSize="30" TextWrapping="Wrap"/>
                                   <TextBlock Text="{Binding podate}" Margin="0,40,20,20" HorizontalAlignment="Left" FontFamily="Segoe WP Light" FontSize="22" TextWrapping="NoWrap"/>
                                   <Image Height="120" Width="120" Grid.Column="1" Margin="0,-20,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Source="/Icons/appbar.transport.play.rest.png"/>
                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                        
                    </ListBox>

    Dans mon code c# j'ai la méthode seq_SelectionChanged qui surveille  la listBox,
    ensuite je crée un nouvel élément -pod - auquel j'attribue les propriétés de l'élément sélectionné (jusqu'à là ça marche, j'ai vérifié en plaçant un breakPoint),
    puis je crée une nouvelle Uri, un nouveau MediaElement, j'attribue l'Uri au MediaElement.Source, et je lance l'audio, mais rien ne sort ni de l'émulateur, ni de mon téléphone (que j'ai débranché du PC après avoir installé l'application, à cause de Zune).
    J'ai besoin de votre aide!

            private void seq_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                Podcast pod = new Podcast();
                pod = (Podcast)seqListBox.SelectedItem;
    
                Uri uri = new Uri(pod.podlink);
    
                MediaElement me = new MediaElement();
                me.Source = new Uri(pod.podlink, UriKind.Absolute);
                me.AutoPlay = true;
                me.Play();
            }

    mardi 5 juin 2012 03:45

Réponses

  • Ok, je vois ton soucis maintenant.

    Il faut que ton mediaelement soit dans ton xaml pour jouer. Il faut donc que tu fasses

    <MediaElement Height="1" Width="1" x:Name="MonMediaElement"/>

    <ListBox ta listebox... >

    et dans ton code

    private void seq_SelectionChanged(object sender, SelectionChangedEventArgs e)

    { Podcast pod = new Podcast(); pod = (Podcast)seqListBox.SelectedItem; Uri uri = new Uri(pod.podlink, UriKind.Absolute); MonMediaElement.Source = uri; MonMediaElement.Play(); }


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue


    mardi 5 juin 2012 12:30

Toutes les réponses

  • private void seq_SelectionChanged(object sender, SelectionChangedEventArgs e)

    { Podcast pod = new Podcast(); pod = (Podcast)seqListBox.SelectedItem; MediaElement me = new MediaElement(); Uri uri = new Uri(pod.podlink, UriKind.RelativeOrAbsolute); me.Source = uri; me.Play(); }

    Bonjour :-)

    Essaie comme ceci, après tout dépend de l'endroit où est placé ton fichier MP3.
    Selon ce lien par exemple, il n'y a aucune raison pour que ce code ne fonctionne pas!

    Cordialement,

    mardi 5 juin 2012 08:42
  • @mafyou : ton code ne change rien (l'uri est forcément absolute) :D

    Il y a un moyen très simple pour savoir si ton flux est compatible windows phone ou pas, prend l'url de ton flux et mets la dans internet explorer (de ton téléphone), si le téléphone arrive à jouer le son, alors il est compatible, sinon non

    Sinon tu as fait tout ce qu'il faut (débrancher ton tel par exemple pour tester), mais je te conseille une méthode moins contraignante.

    - Branche ton téléphone à ton pc

    - zune se lance

    - ferme zune

    - lance l'utilitaire : WPConnect qui se trouve dans le répertoire : C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect

    Si la fenetre se ferme rapidement, relance le (si la fenetre reste 2-3 secondes c'est ok)

    Tu peux maintenant deboguer ton app sans être lié a Zune et donc tu peux lancer de la musique


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mardi 5 juin 2012 10:18
  • Bon mon flux joue bien dans IE, voici le lien si vous pouvez tester, mais je n'arrive pas à le faire fonctionner dans mon application.
    Je vais chercher une autre solution, peut-être en téléchargeant le fichier .mp3

    Je note que j'ai du son en plaçant le MediaElement directement dans le xaml avec Autoplay=true, mais c'est pas ça que je veux (étant donné que j'ai plusieurs élément dans ma listBox).


    PS: j'ai essayé de structuré mon code comme sur ce lien, mais attribuer un nom à un élément (en général) dans un Data.ItemTemplate ne fonctionne pas (pas possible d'utiliser ce nom dans le code behind c#)

    mardi 5 juin 2012 11:57
  • Ok, je vois ton soucis maintenant.

    Il faut que ton mediaelement soit dans ton xaml pour jouer. Il faut donc que tu fasses

    <MediaElement Height="1" Width="1" x:Name="MonMediaElement"/>

    <ListBox ta listebox... >

    et dans ton code

    private void seq_SelectionChanged(object sender, SelectionChangedEventArgs e)

    { Podcast pod = new Podcast(); pod = (Podcast)seqListBox.SelectedItem; Uri uri = new Uri(pod.podlink, UriKind.Absolute); MonMediaElement.Source = uri; MonMediaElement.Play(); }


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue


    mardi 5 juin 2012 12:30
  • Merci Rudy, it works like a charm :)


    mardi 5 juin 2012 13:12