2

Est-ce que quelqu'un a un exemple de code de travail (testé) pour lire un fichier audio à partir d'un stockage isolé. Le code que j'ai actuellement, qui ne jette pas une exception ou faire un son, est la suivante:Lecture des morceaux de l'utilisateur à l'aide de Silverlight

 MediaElement ME = new MediaElement(); 
     ME.AutoPlay = false; 
     IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
     ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open)); 
     ME.Play(); 

J'ai essayé cela en utilisant un certain nombre de formats audio, codés en utilisant l'expression, mais je dois toujours le même problème. En outre, je voudrais bien un exemple en utilisant le navigateur de fichiers pour charger la chanson à partir d'un flux de fichier, mais cela est moins important et l'exemple de stockage isolé pourrait facilement être converti.

J'ai vérifié, et si j'incorpore le fichier dans l'application, il joue bien. Le problème est que je veux que les utilisateurs puissent charger leurs propres chansons dans l'application, qui seront ensuite stockées et lues depuis un stockage isolé. Finalement, comme dans l'exemple, je préférerais le faire en code C# plutôt qu'en XAML.

+0

Avez-vous vérifié la propriété 'CurrentState' par la suite? Avez-vous essayé d'accrocher un gestionnaire à l'événement 'MediaFailed'? –

+0

Avez-vous essayé d'ouvrir un fichier texte ou image pour vous assurer que vous avez bien compris? – ChrisF

+1

L'état actuel passait directement à une pause. Il semble que la méthode de jeu ne fonctionnera qu'après le chargement du fichier (travaillé quand je l'ai mis dans un gestionnaire d'événements séparé). La définition de AutoPlay sur true fonctionne correctement. – ForbesLindesay

Répondre

1
  1. Vous ne pouvez pas avoir la commande Lecture dans la même méthode que la commande SetSource car le fichier sera ouvert de manière asynchrone. En définissant AutoPlay sur true (qui est également le defualt). Vous vous assurez qu'il va jouer dès qu'il est chargé.

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open)); 
    
  2. Silvelright ne supporte pas nativement les fichiers wav, afin de lire des fichiers WAV, vous devez télécharger http://code.msdn.microsoft.com/wavmss, utilisez le code suivant.

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open))); 
    

    Bien que pas idéal, vous pouvez utiliser les extensions de fichiers pour détecter lorsqu'un fichier wav est en cours de lecture et d'utiliser le second exemple de code seulement dans ce cas.

Questions connexes