public class AudioPlayer
{
private WaveOutEvent waveOut;
private bool loop;
public bool Loop
{
get { return loop; }
set { loop = value; }
}
public bool IsPlaying { get; private set; }
public void Play(string filePath)
{
waveOut = new WaveOutEvent();
Mp3FileReader mp3Reader = new Mp3FileReader(filePath);
waveOut.Init(mp3Reader);
waveOut.Play();
waveOut.PlaybackStopped += WaveOut_PlaybackStopped;
IsPlaying = true;
}
public void Stop()
{
waveOut?.Stop();
IsPlaying = false;
}
private void WaveOut_PlaybackStopped(object sender, StoppedEventArgs e)
{
if (loop && IsPlaying)
{
waveOut.Play();
}
else
{
IsPlaying = false;
}
}
}
调用
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.Loop = true; //是否循环
audioPlayer.Play("../../music/load.mp3");