Solución:
Para los usuarios de NAudio 1.6 y superior, no use el código en la respuesta original aceptada. No es necesario agregar un WaveFormatConversionStream
o un BlockAlignReductionStream
, y debes evitar usar WaveOut
con devoluciones de llamada de función (WaveOutEvent
es preferible si no está en una aplicación WinForms o WPF). Además, a menos que desee bloquear la reproducción, normalmente no dormiría hasta que finalice el audio. Solo suscríbete a WaveOut
‘s PlaybackStopped
evento.
El siguiente código funcionará bien para reproducir un MP3 en NAudio:
var reader = new Mp3FileReader("test.mp3");
var waveOut = new WaveOut(); // or WaveOutEvent()
waveOut.Init(reader);
waveOut.Play();
Intente así:
class Program
{
static void Main()
{
using (var ms = File.OpenRead("test.mp3"))
using (var rdr = new Mp3FileReader(ms))
using (var wavStream = WaveFormatConversionStream.CreatePcmStream(rdr))
using (var baStream = new BlockAlignReductionStream(wavStream))
using (var waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(baStream);
waveOut.Play();
while (waveOut.PlaybackState == PlaybackState.Playing)
{
Thread.Sleep(100);
}
}
}
}
Editar este código ahora está desactualizado (se relaciona con NAudio 1.3). No recomendado en versiones más recientes de NAudio. Consulte la respuesta alternativa.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)