2010-12-21 5 views
0

J'enregistre le son à partir du microphone. Ensuite, je sauve PCM avec en-tête wav à un stockage isolé. Ensuite, je joue avec MediaElement. Je veux avoir la possibilité de mettre en pause la chanson, mais cela semble impossible. J'ai essayé d'utiliser SmoothStreamingMediaElement mais le problème était le même - peut-être que j'ai fait quelque chose de mal.Téléphone Windows 7 Élément média wav pause

Si quelqu'un a une idée de la façon de mettre en pause la chanson de microhone alors s'il vous plaît aider.

Voici mon code mais la pause ne fonctionne pas. Peut-être que je peux lire le fichier de façon différente?

  using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       using (var audio = store.OpenFile(_song_path, FileMode.Open, FileAccess.Read)) 
       { 
        _media_element.MediaOpened += new RoutedEventHandler(_media_element_MediaOpened); 
        _media_element.SetSource(audio); 
        audio.Close(); 
       } 
      } 

Code est assez simple pause :)

private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     _media_element.Pause(); 
    } 

Pour les tests, je l'ai fait simple projet avec la possibilité de télécharger des fichiers depuis Internet et jouer de stockage isolé. Cela fonctionne avec wmv et mp3 mais pas avec wav. Voici VS projet DowloadingAndPlayingWav

Si quelqu'un a une idée de l'aide. J'ai piraté probablement Internet entier - il n'y a pas de solution à ce problème.

+0

je soupçonne qu'il peut y avoir quelque chose de mal se passe avec votre MediaStreamSource. J'ai été capable de lire/suspendre l'audio PCM à partir d'un MediaStreamSource personnalisé sur WP7 sans aucun problème. Pouvez-vous fournir plus de code qui montre quand/comment vous appelez Pause()? – kindohm

+0

Pouvez-vous donner un exemple de code? Comment vous l'avez fait? –

Répondre

0

MediaElement a une méthode Pause. Avez-vous essayé d'utiliser ça?

+0

Oui, mais pour les flux, cela ne fonctionne pas - c'est ce que la documentation dit. La même chose est pour le réglage de la position. –

+0

@Michal La documentation indique qu'elle échouera silencieusement lors de la lecture du contenu en direct, et non lors de la lecture d'un flux de fichier. Avez-vous essayé cela? –

+0

Ok vous avez raison. Cependant, il ne fonctionne toujours pas avec les fichiers wav, pourquoi? wmv -works, mp3 - fonctionne, wav - PAS! J'ai essayé avec 5 fichiers wav différents. La mediaElement1.CanPause retourne "puseFalse" tout le temps! –

0

Pour tous ceux qui sont encore intéressés par ce sujet (à partir d'une recherche peut-être), je pensais que je partagerais comment j'ai géré cela dans mon application (Rapid Recorder).

Je ne pouvais pas trouver un moyen approprié de mettre en pause, mais il peut facilement être truqué. Lorsque vous cliquez sur le bouton Pause, vous enregistrez simplement la position de lecture actuelle et vous arrêtez la lecture. Lorsque vous appuyez sur le bouton de lecture, vous pouvez simplement rétablir votre position après avoir lancé la lecture. Voici quelques extraits:

private TimeSpan _pausedPosition; 

Pour faire une pause:

_pausedPosition = Player.Position; 
Player.Stop(); 

jouer:

Player.Play(); 
if (_pausedPosition != TimeSpan.Zero) Player.Position = _pausedPosition; 
Questions connexes