J'ai essayé d'utiliser:NAudio: Comment puis-je obtenir un événement qui me dit que le fichier MP3 a atteint la fin?
private void CreateDevice()
{
_playbackDevice = new WaveOut();
_playbackDevice.PlaybackStopped += PlaybackDevicePlaybackStopped;
}
void PlaybackDevicePlaybackStopped(object sender, EventArgs e)
{
if (OnPlaybackStopped != null)
{
OnPlaybackStopped(this, e);
}
}
Mais il n'a jamais invoqué.
Alors j'ai essayé d'utiliser le PlaybackState en interrogeant la propriété avec une minuterie:
public PlaybackState PlaybackState
{
get
{
if (_playbackDevice == null)
return default(PlaybackState);
return _playbackDevice.PlaybackState;
}
}
Mais quand la chanson se termine, il ne change pas « arrêté ». Mais quand j'appelle manuellement Arrête ça change correctement.
Quelqu'un peut-il m'aider?
Il semble y avoir un bug ... http://naudio.codeplex.com/WorkItem/View.aspx?WorkItemId=10726
Avez-vous venir avec une solution? C'est un peu gênant si l'audio continue de jouer si je l'ai rembobiné à la fin. Un événement ReachedEnd ou une propriété booléenne StopAtEnd suffirait. En fait, je préférerais arrêter de m'arrêter;) –
Que jouez-vous? Si vous jouez un flux sans fin, 'PlaybackStopped' ne se déclenchera jamais. Mais si vous lisez un fichier (par exemple 'Mp3FileReader', vous vous arrêterez automatiquement à la fin) –
Je joue un fichier wave en utilisant WaveOutEvent et AudioFileReader. Ce serait une bonne idée d'avoir aussi et l'événement qui est appelé quand l'état de jeu change (jouer, mettre en pause, arrêté etc.). –