Воспроизведение файлов .wav с помощью Naudio lib - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь открыть и воспроизвести .wav файлы с помощью NAudio lib.

private OpenFileDialog openFileDialog = null;
private NAudio.Wave.IWavePlayer waveOutDevice;
private NAudio.Wave.BlockAlignReductionStream reductionStream = null;

private NAudio.Wave.BlockAlignReductionStream CreateStream(OpenFileDialog fileDialog)
{

    if (fileDialog.FileName.EndsWith(".mp3"))
    {
        NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(fileDialog.FileName));
        reductionStream = new NAudio.Wave.BlockAlignReductionStream(pcm);
    }
    else if (fileDialog.FileName.EndsWith(".wav"))
    {
        NAudio.Wave.WaveStream pcm = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(openFileDialog.FileName));
        reductionStream = new NAudio.Wave.BlockAlignReductionStream(pcm);
    }
    else
    {
        throw new InvalidOperationException("Unsupported");
    }

    return reductionStream;
}

и кнопка воспроизведения:

waveOutDevice = new NAudio.Wave.DirectSoundOut();
reductionStream = CreateStream(openFileDialog);
waveOutDevice.Init(reductionStream);

Я использую версию NAudio 1.5. Для mp3-файлов это хорошо. Когда я выбираю .wav, воспроизведение идет медленно и скрипит. Может быть, что-то не так с WaveStream pcm = WaveChannel32?

1 Ответ

4 голосов
/ 03 апреля 2012

Вам не нужно использовать BlockAlignReductionStream, WaveChannel32 или CreatePcmStream.Просто используйте Mp3FileReader или WaveFileReader и передайте его в свой IWavePlayer,

...