NAudioを使用して単純なオーディオ プレーヤーを作成していますPlaybackState
が、WaveOut
ストリームを「停止」に変更してイベントを発生させるソリューションが見つかりませんPlaybackState
。
以下のようにしました。
private BlockAlignReductionStream stream = null;
private NAudio.Wave.WaveOut output = null;
private void Add_to_stream()
{
string[] files = Directory.GetFiles(Settings.Default.m + "\\","*"+selected_music+"*");
if (files[0].EndsWith(".mp3"))
{
NAudio.Wave.Mp3FileReader mp3fr = new NAudio.Wave.Mp3FileReader(Settings.Default.m + "\\" + selected_music + ".mp3");
var pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(mp3fr);
stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
}
else if (files[0].EndsWith(".wav"))
{
NAudio.Wave.WaveFileReader wavfr = new NAudio.Wave.WaveFileReader(Settings.Default.m + "\\" + selected_music + ".wav");
var pcm = new NAudio.Wave.WaveChannel32(wavfr);
pcm.PadWithZeroes = false;
stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
}
else throw new InvalidOperationException("file type is not supported.");
output = new NAudio.Wave.WaveOut();
output.Init(stream);
}
もともと、 WaveOutクラスの代わりにDirectSoundOutクラスを使用していて、この問題を克服できたのですが、それは Resuming をサポートしていません。
すでにこの問題に直面している人がたくさんいることは知っていますが、両方のこと (PlaybackState の再開と発火) に代わるものはありますか?