gpt4 book ai didi

c# - NAudio 播放不会成功停止

转载 作者:行者123 更新时间:2023-11-30 16:33:57 28 4
gpt4 key购买 nike

使用 NAudio 时播放 MP3文件 [在控制台中],我不知道如何停止播放。当我调用 waveout.Stop() 时,代码就停止运行并且 waveout.Dispose() 永远不会被调用。

跟函数回调有关系吗?如果是,我该如何解决?

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;
}

最佳答案

你是说代码在调用 waveOutReset 时挂起了吗?如果是这样,这是函数回调和某些音频驱动程序的已知问题(SoundMAX 似乎特别容易受到此影响)。几个月前,我检查了对 NAudio 源代码的可能修复,因此您可以尝试构建最新代码,看看是否能解决问题。

关于c# - NAudio 播放不会成功停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811908/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com