Example #1
0
        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);
        }
Example #2
0
        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);
        }