NAudio을 사용하여 MP3 파일을 재생할 때 재생을 중지하는 방법을 알 수 없습니다. waveout.Stop()을 호출하면 코드가 실행을 멈추고 waveout.Dispose()가 호출되지 않습니다.NAudio 재생이 성공적으로 중지되지 않음
함수 콜백과 관련이 있습니까? 그렇다면 어떻게 수정해야합니까? 여기
static string MP3 = @"song.mp3";
static WaveOut waveout;
static WaveStream playback;
static void Main(string[] args)
{
waveout = new WaveOut(WaveCallbackInfo.FunctionCallback());
playback = OpenMp3Stream(MP3);
waveout.Init(playback);
waveout.Play();
Console.WriteLine("Started");
Thread.Sleep(2 * 1000);
Console.WriteLine("Ending");
if (waveout.PlaybackState != PlaybackState.Stopped)
waveout.Stop();
Console.WriteLine("Stopped");
waveout.Dispose();
Console.WriteLine("1st dispose");
playback.Dispose();
Console.WriteLine("2nd dispose");
}
private static WaveChannel32 OpenMp3Stream(string fileName)
{
WaveChannel32 inputStream;
WaveStream mp3Reader = new Mp3FileReader(fileName);
WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
WaveStream blockAlignedStream = new BlockAlignReductionStream(pcmStream);
inputStream = new WaveChannel32(blockAlignedStream);
return inputStream;
}
나는 '사용하는'문장이 여기에 아주 편리 할 것이라고 생각하지만 나는 naudio가 없으므로 실제로 테스트 할 수 없다. –
이것은 샘플 코드 일뿐입니다. 사용 문을 사용하면 실제로 장기적으로 작동 할 것입니다. 실제로 waveout.stop() 호출에서 돌아 오지 않습니다. 그것은 기능을 입력하고 전혀 떠나지 않는 것. – Kurru