public WaveStream GetStream(string path) { WaveStream ret = null; string lp = path.ToLower(); if (lp.EndsWith(".wav")) { ret = new WaveFileReader(path); if (ret.WaveFormat.Encoding != WaveFormatEncoding.Pcm && ret.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat) { ret = WaveFormatConversionStream.CreatePcmStream(ret); ret = new BlockAlignReductionStream(ret); } } else if (lp.EndsWith(".mp3")) { ret = new Mp3FileReader(path); } else if (lp.EndsWith(".aiff")) { ret = new AiffFileReader(path); } else if (lp.EndsWith(".wma")) { ret = new NAudio.WindowsMediaFormat.WMAFileReader(path); } return(ret); }
static WaveStream GetWaveStream(string file) { WaveChannel32 inputStream = null; WaveStream reader = null; WaveStream work = null; try { if (file.EndsWith(".ogg", StringComparison.OrdinalIgnoreCase)) { work = new NVorbis.NAudioSupport.VorbisWaveReader(file); //TODO: Switch to memory stream and test. //work = new NVorbis.NAudioSupport.VorbisWaveReader( } else if (file.EndsWith(".aiff", StringComparison.OrdinalIgnoreCase)) { work = new AiffFileReader(file); } else if (file.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase)) { work = new Mp3FileReader(file); } else if (file.EndsWith(".wma", StringComparison.OrdinalIgnoreCase)) { work = new NAudio.WindowsMediaFormat.WMAFileReader(file); } reader = work; work = null; } catch (Exception ex) { if (_log.IsWarnEnabled) { _log.Warn("Unable to get audio stream", ex); } } finally { if (work != null) { work.Dispose(); } } try { if (reader != null) { inputStream = new WaveChannel32(reader); } } catch (Exception ex) { if (_log.IsWarnEnabled) { _log.Warn("Error trying to set up inputStream", ex); } } return(inputStream); }
public static byte[] Wma_to_wav(string fil_n, byte ch, out byte[] mono) { byte[] mono2 = null; Task a = Task.Run(() => { WaveFormat format = new WaveFormat(48000, 16, 1); try { using (NAudio.WindowsMediaFormat.WMAFileReader reader = new NAudio.WindowsMediaFormat.WMAFileReader(fil_n)) { using (WaveFormatConversionStream stream = new WaveFormatConversionStream(format, reader)) { mono2 = new byte[stream.Length]; stream.Read(mono2, 0, mono2.Length); } } } catch (Exception) { } }); byte[] buffer = null; try { WaveFormat format = new WaveFormat(48000, 16, ch); using (NAudio.WindowsMediaFormat.WMAFileReader reader = new NAudio.WindowsMediaFormat.WMAFileReader(fil_n)) { using (WaveFormatConversionStream stream = new WaveFormatConversionStream(format, reader)) { buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); } } } catch (Exception) { } a.Wait(); mono = mono2; return(buffer); }