Lorsque vous utilisez NAudio pour lire un fichier MP3 [dans la console], je n'arrive pas à déterminer comment arrêter la lecture. Quand j'appelle waveout.Stop() le code s'arrête juste de fonctionner et waveout.Dispose() n'est jamais appelé.La lecture du fichier audio ne s'arrête pas
Cela a-t-il quelque chose à voir avec le rappel de fonction? Si c'est le cas, comment puis-je le réparer?
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;
}
J'ai l'impression que l'instruction 'using' serait très utile ici, mais je n'ai pas naudio donc je ne peux pas vraiment tester. –
bien ceci est seulement un exemple de code, je ne pense pas que l'utilisation d'une instruction using fonctionnerait vraiment à long terme. Ce n'est pas vraiment de retour de l'appel waveout.Stop() du tout. Il entre dans la fonction et ne semble pas partir du tout. – Kurru