Ejemplo n.º 1
0
        public async Task PlayAudioStream(string url)
        {
            var response = await WebRequest.Create(url).GetResponseAsync();

            using (Stream ms = new MemoryStream())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    byte[] buffer = new byte[32768];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                }

                ms.Position = 0;
                using (WaveStream blockAlignedStream = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms))))
                    using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                    {
                        waveOut.Init(blockAlignedStream);
                        waveOut.Play();
                        while (waveOut.PlaybackState == PlaybackState.Playing)
                        {
                            System.Threading.Thread.Sleep(100);
                        }
                    }
            }
        }
Ejemplo n.º 2
0
        public static WaveStream CreateInputStream(string name)
        {
            WaveChannel32 inputStream;

            if (name.EndsWith(".wav"))
            {
                WaveStream readerStream = new WaveFileReader(name);
                if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
                    readerStream = new BlockAlignReductionStream(readerStream);
                }

                if (readerStream.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels);
                    readerStream = new WaveFormatConversionStream(format, readerStream);
                }
                inputStream = new WaveChannel32(readerStream);
            }
            else
            {
                throw new InvalidOperationException("Invalid extension");
            }
            return(inputStream);
        }
Ejemplo n.º 3
0
        private WaveOut CreatePlay(string file)
        {
            string ext = Path.GetExtension(file);

            if (file.EndsWith(".mp3"))
            {
                using (var reader = new Mp3FileReader(file))
                {
                    using (var waveStream = WaveFormatConversionStream.CreatePcmStream(reader))
                    {
                        using (var blockStream = new BlockAlignReductionStream(waveStream))
                        {
                            play = new WaveOut(WaveCallbackInfo.FunctionCallback());
                            play.Init(blockStream);
                        }
                    }
                }
            }
            System.Media.SoundPlayer
            else if (file.EndsWith(".wma"))
            {
                using (var reader = new WMAFileReader(file))
                {
                    using (var waveStream = WaveFormatConversionStream.CreatePcmStream(reader))
                    {
                        using (var blockStream = new BlockAlignReductionStream(waveStream))
                        {
                            play = new WaveOut(WaveCallbackInfo.FunctionCallback());
                            play.Init(blockStream);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a wave stream from the given file.
        /// </summary>
        /// <param name="fileName">A WAVE or MP3 file.</param>
        private WaveChannel32 CreateInputStream(string fileName)
        {
            WaveChannel32 inputStream;

            if (fileName.EndsWith(".wav"))
            {
                WaveStream readerStream = new WaveFileReader(fileName);
                if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
                    readerStream = new BlockAlignReductionStream(readerStream);
                }
                if (readerStream.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels);
                    readerStream = new WaveFormatConversionStream(format, readerStream);
                }
                inputStream = new WaveChannel32(readerStream);
            }
            else if (fileName.EndsWith(".mp3"))
            {
                WaveStream mp3Reader          = new Mp3FileReader(fileName);
                WaveStream pcmStream          = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
                WaveStream blockAlignedStream = new BlockAlignReductionStream(pcmStream);
                inputStream = new WaveChannel32(blockAlignedStream);
            }
            else
            {
                throw new InvalidOperationException("Unsupported audio extension");
            }

            return(inputStream);
        }
Ejemplo n.º 5
0
        private void PlayNotificationSound()
        {
            if (DateTime.UtcNow >= nextAudioAlertPlay)
            {
                DisableAudioAlertForDuration();
                try
                {
                    System.Windows.Resources.StreamResourceInfo sri = Application.GetResourceStream(new Uri("WPFApp/Resources/audio/FeenPhoneDJAlert.wav", UriKind.Relative));

                    using (WaveStream ws =
                               new BlockAlignReductionStream(
                                   WaveFormatConversionStream.CreatePcmStream(
                                       new WaveFileReader(sri.Stream))))
                    {
                        var length = ws.Length;
                        if (length < int.MaxValue)
                        {
                            byte[] data   = new byte[length];
                            var    format = ws.WaveFormat;
                            int    read   = ws.Read(data, 0, (int)length);
                            EventSource.InvokePlaySoundEffect(this, format, data);
                        }
                    }
                }
                catch { }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Resample wavefile to new waveformat and return WaveStream
        /// </summary>
        /// <param name="wavInFilePath">audiofile</param>
        /// <param name="waveFormat">waveformat</param>
        /// <returns>WaveStream</returns>
        public static WaveStream ResampleToWaveStream(string wavInFilePath, WaveFormat waveFormat)
        {
            //WaveStream sourceStream = CreateInputWaveStream(wavInFilePath);
            WaveStream sourceStream = null;

            try {
                sourceStream = (WaveStream) new AudioFileReader(wavInFilePath);
            } catch (Exception) {
                return(null);
            }

            if (sourceStream.WaveFormat.Encoding == WaveFormatEncoding.IeeeFloat)
            {
                // TODO: if the source is IeeFloat, the CreatePcmSteeam and ConverstionStream fail!?
                return(sourceStream);
            }
            else if (sourceStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
            {
                sourceStream = WaveFormatConversionStream.CreatePcmStream(sourceStream);
                sourceStream = new BlockAlignReductionStream(sourceStream);
            }
            if (sourceStream.WaveFormat.SampleRate != waveFormat.SampleRate ||
                sourceStream.WaveFormat.BitsPerSample != waveFormat.BitsPerSample ||
                sourceStream.WaveFormat.Channels != waveFormat.Channels)
            {
                sourceStream = new WaveFormatConversionStream(waveFormat, sourceStream);
                sourceStream = new BlockAlignReductionStream(sourceStream);
            }

            return(sourceStream);
        }
Ejemplo n.º 7
0
        public void open()
        {
            DisposeWave();
            Graph();

            if (inputpath.EndsWith(".mp3"))
            {
                WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(inputpath));
                stream = new BlockAlignReductionStream(pcm);
            }

            else
            {
                throw new InvalidOperationException("Not a correct audio file type.");
            }

            FileInfo fileInf = new FileInfo(inputpath);

            trackDuration = string.Format("Duration: {0:D2} hrs, {1:D2} mins, {2:D2} secs", TimeMP3(inputpath).Hours, TimeMP3(inputpath).Minutes, TimeMP3(inputpath).Seconds);

            audioLength = (fileInf.Length) / (1024 * 1024);

            output = new DirectSoundOut();
            output.Init(stream);
            output.Play();
        }
Ejemplo n.º 8
0
        public void DisposeAudioOutput()
        {
            if (mainDirectSoundOut != null)
            {
                if (mainDirectSoundOut.PlaybackState != PlaybackState.Stopped)
                {
                    mainDirectSoundOut.Stop();
                }
                mainDirectSoundOut.Dispose();
                mainDirectSoundOut = null;
            }
            if (mainBARStream != null)
            {
                mainBARStream.Dispose();
                mainBARStream = null;
            }
            if (mainWaveIn != null)
            {
                mainWaveIn.StopRecording();
                mainWaveIn.Dispose();
                mainWaveIn = null;
            }

            SetTemp();
            label1.Text       = "";
            errormessage.Text = "The audio was disposed";
        }
Ejemplo n.º 9
0
 /// <summary>
 /// 播放声音
 /// </summary>
 private void PlaySound()
 {
     using (var ms = File.OpenRead("record/temp.wav"))
         using (var rdr = new WaveFileReader(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();
                         int i = 0;
                         while (waveOut.PlaybackState == PlaybackState.Playing)
                         {
                             Thread.Sleep(100);
                             //动画展示
                             images = talk.GetFiles();
                             if (i == images.Length - 8)
                             {
                                 i = 0;
                             }
                             this.BackgroundImage = Image.FromFile(images[i].FullName);
                             i++;
                         }
                     }
     isGoNextAni   = true;
     isGoNextMusic = true;
 }
Ejemplo n.º 10
0
        void PlaySound(string link, int WaveOutDeviceId)
        {
            using (Stream ms = new MemoryStream())
            {
                using (Stream stream = WebRequest.Create(link).GetResponse().GetResponseStream())
                {
                    byte[] buffer = new byte[4096];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                }

                ms.Position = 0;
                using (WaveStream mf = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms))))
                    using (var wo = new WaveOutEvent())
                    {
                        wo.DeviceNumber           = WaveOutDeviceId;
                        PitchProvider             = new SmbPitchShiftingSampleProvider(mf.ToSampleProvider().ToMono());
                        PitchProvider.PitchFactor = Pitch;
                        wo.Init(PitchProvider);
                        wo.Volume = VoiceVolume;
                        wo.Play();
                        while (wo.PlaybackState == PlaybackState.Playing)
                        {
                            PitchProvider.PitchFactor = Pitch;
                            wo.Volume = VoiceVolume;
                            Thread.Sleep(500);
                        }
                    }
            }
        }
Ejemplo n.º 11
0
        public static void PlayNASound(string url)
        {
            using (Stream ms = new MemoryStream())
            {
                using (Stream stream = File.Open(url, FileMode.Open))
                {
                    byte[] buffer = new byte[32768];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                }

                ms.Position = 0;
                using (WaveStream blockAlignedStream = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms))))
                {
                    using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                    {
                        waveOut.Init(blockAlignedStream);
                        waveOut.PlaybackStopped += (sender, e) =>
                        {
                            waveOut.Stop();
                        };

                        waveOut.Play();
                        waiting = true;
                        stop.WaitOne(10000);
                        waiting = false;
                    }
                }
            }
        }
Ejemplo n.º 12
0
        private void PlayMp3()
        {
            try
            {
                using (Mp3FileReader reader = new Mp3FileReader(currentTrack.Data))
                    using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(reader))
                        using (WaveStream blockAlignedStream = new BlockAlignReductionStream(pcm))
                        {
                            using (_waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                            {
                                _waveOut.Init(blockAlignedStream);

                                _waveOut.Play();
                                while (
                                    !WindowClosed &&
                                    !_stop &&
                                    _waveOut != null &&
                                    _waveOut.PlaybackState == PlaybackState.Playing)
                                {
                                    System.Threading.Thread.Sleep(100);
                                }

                                _waveOut.Stop();
                            }
                        }
            }
            catch (Exception e)
            {
            }
        }
Ejemplo n.º 13
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);
        }
Ejemplo n.º 14
0
        public WaveStream CreateWaveStream(string fileName)
        {
            if (Path.GetExtension(fileName) == ".wav")
            {
                WaveStream readerStream = new WaveFileReader(fileName);
                if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm && readerStream.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat)
                {
                    readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
                    readerStream = new BlockAlignReductionStream(readerStream);
                }
                return(readerStream);
            }
            else if (Path.GetExtension(fileName) == ".mp3")
            {
                Mp3FileReader readerStream = new Mp3FileReader(fileName);

                return(new Mp3FileReader(fileName));
            }
            else if (Path.GetExtension(fileName) == ".aiff")
            {
                return(new AiffFileReader(fileName));
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 再生を開始します。
        /// </summary>
        public void PlayStreaming(string url)
        {
            if (_waveOut == null)
            {
                new Thread(delegate(object o)
                {
                    var response = WebRequest.Create(url).GetResponse();
                    using (var stream = response.GetResponseStream())
                    {
                        byte[] buffer = new byte[65536]; // 64KB chunks

                        int read;

                        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            var pos     = ms.Position;
                            ms.Position = ms.Length;
                            ms.Write(buffer, 0, read);
                            ms.Position = pos;
                        }
                    }
                }).Start();
            }


            // Pre-buffering some data to allow NAudio to start playing
            while (ms.Length < 65536 * 10)
            {
                Thread.Sleep(1000);
            }

            int errorCont = 0;

            try
            {
                using (reader = new Mp3FileReader(ms))
                    using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(reader))
                        using (WaveStream blockAlignedStream = new BlockAlignReductionStream(pcm))
                        {
                            using (_waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                            {
                                _waveOut.Init(blockAlignedStream);
                                _waveOut.Play();
                                while (_waveOut.PlaybackState == PlaybackState.Playing)
                                {
                                    Console.WriteLine(reader.CurrentTime);
                                    System.Threading.Thread.Sleep(100);
                                }
                            }
                        }
            }
            catch
            {
                if (errorCont > 10)
                {
                    MessageBox.Show("10回Tryしましたが再生に失敗しました。");
                }
                errorCont++;
            }
        }
Ejemplo n.º 16
0
 public void test_play_stream_urlMP3Online_v3(string url, int timeout)
 {
     using (Stream ms = new MemoryStream())
     {
         using (Stream stream = WebRequest.Create(url)
                                .GetResponse().GetResponseStream())
         {
             byte[] buffer = new byte[32768];
             int    read;
             while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
             {
                 ms.Write(buffer, 0, read);
             }
         }
         ms.Position = 0;
         using (WaveStream blockAlignedStream =
                    new BlockAlignReductionStream(
                        WaveFormatConversionStream.CreatePcmStream(
                            new Mp3FileReader(ms))))
         {
             using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
             {
                 waveOut.Init(blockAlignedStream);
                 waveOut.PlaybackStopped += (sender, e) =>
                 {
                     waveOut.Stop();
                 };
                 waveOut.Play();
                 waiting = true;
                 stop.WaitOne(timeout);
                 waiting = false;
             }
         }
     }
 }
Ejemplo n.º 17
0
        private void List_Son_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (List_Son.SelectedItem != null)
            {
                // Avoir l'item selectionné
                string itemSelectionne = ((AvoirPath)List_Son.SelectedItem).Path;
                Dispose();
                //condition si c'est MP3 on le convertit
                if (itemSelectionne.EndsWith(".mp3"))
                {
                    WaveStream convert = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(itemSelectionne));
                    song = new BlockAlignReductionStream(convert);
                }
                else if (itemSelectionne.EndsWith(".wav"))
                {
                    WaveStream convert = new WaveChannel32(new WaveFileReader(itemSelectionne));
                    song = new BlockAlignReductionStream(convert);
                }

                output = new DirectSoundOut();
                //initialisation du son
                output.Init(song);
                output.Play();
            }
        }
Ejemplo n.º 18
0
        public override void LoadStream()
        {
            try
            {
                WebStream = new MemoryStream();

                using (Stream stream = WebRequest.Create(Url)
                                       .GetResponse().GetResponseStream())
                {
                    byte[] buffer = new byte[32768];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        WebStream.Write(buffer, 0, read);
                    }
                }

                WebStream.Position = 0;
                Stream             = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(
                                                                       new Mp3FileReader(WebStream)));
            }
            catch (Exception ex)
            {
                Logging.Log(ex);
            }
        }
Ejemplo n.º 19
0
 public WaveFile(WaveFileReader reader, BlockAlignReductionStream stream, string path) : base(stream, path)
 {
     this.Reader   = reader;
     this.Samples  = new byte[this.Reader.Length];
     this.Channels = reader.WaveFormat.Channels;
     this.callRead();
 }
Ejemplo n.º 20
0
        private static WaveStream CreateReaderStream(string fileName)
        {
            WaveStream readerStream = null;

            if (fileName.EndsWith(".wav", StringComparison.OrdinalIgnoreCase))
            {
                readerStream = new WaveFileReader(fileName);
                if (readerStream.WaveFormat.Encoding == WaveFormatEncoding.Pcm ||
                    readerStream.WaveFormat.Encoding == WaveFormatEncoding.IeeeFloat)
                {
                    return(readerStream);
                }
                readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
                readerStream = new BlockAlignReductionStream(readerStream);
            }
            else if (fileName.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase))
            {
                readerStream = new Mp3FileReader(fileName);
            }

            else if (fileName.EndsWith(".aiff"))
            {
                readerStream = new AiffFileReader(fileName);
            }

            return(readerStream);
        }
Ejemplo n.º 21
0
        public async Task PlayUrlAsync(Uri url, IAudioClient client)
        {
            _client = client;
            _client.SpeakingUpdated += OnSpeakingUpdated;
            _isPlaying = true;

            using (var ms = new MemoryStream())
            {
                using (Stream stream = WebRequest.Create(url.ToString())
                                       .GetResponse().GetResponseStream())
                {
                    byte[] buffer = new byte[32768];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                }

                ms.Position = 0;
                using (WaveStream blockAlignedStream =
                           new BlockAlignReductionStream(
                               WaveFormatConversionStream.CreatePcmStream(
                                   new Mp3FileReader(ms))))
                {
                    var audioStream = _client.CreatePCMStream(AudioApplication.Mixed, 98304);
                    await blockAlignedStream.CopyToAsync(audioStream);
                }
            }
        }
Ejemplo n.º 22
0
        public void Play(string path)
        {
            Dispose();

            _path = path;

            if (System.IO.Path.GetExtension(_path) == ".mp3")
            {
                pcm = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(_path));
                blockAlignStream = new BlockAlignReductionStream(pcm);
                output.Init(blockAlignStream);
            }
            else if (System.IO.Path.GetExtension(_path) == ".wav")
            {
                wavereader = new WaveFileReader(_path);
                output.Init(new WaveChannel32(wavereader));
            }
            else if (System.IO.Path.GetExtension(_path) == ".aif")
            {
                aiffreader = new AiffFileReader(_path);
                output.Init(new WaveChannel32(aiffreader));
            }
            else
            {
                audioreader = new AudioFileReader(_path);
                output.Init(new WaveChannel32(audioreader));
            }

            output.Play();
        }
Ejemplo n.º 23
0
 private void PlayMp3(string url)
 {
     try
     {
         Stream ms = new MemoryStream();
         // 设置参数
         HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
         //发送请求并获取相应回应数据
         HttpWebResponse response = request.GetResponse() as HttpWebResponse;
         //直到request.GetResponse()程序才开始向目标网页发送Post请求
         Stream responseStream = response.GetResponseStream();
         byte[] buffer         = new byte[1024];
         int    size           = 0;
         //size是读入缓冲区中的总字节数。 如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。
         while ((size = responseStream.Read(buffer, 0, buffer.Length)) != 0) //将responseStream的内容读入buffer数组
         {
             ms.Write(buffer, 0, size);                                      //将buffer数组的内容写入内存流ms
         }
         responseStream.Close();                                             //关闭流并释放连接以供重用
         ms.Position = 0;                                                    //将内存流数据读取位置归零
         WaveStream blockAlignedStream = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms)));
         WaveOut    waveOut            = new WaveOut(WaveCallbackInfo.FunctionCallback());
         waveOut.Init(blockAlignedStream);
         //waveOut.PlaybackStopped += (sender, e) => { waveOut.Stop(); };
         waveOut.Play();
         while (waveOut.PlaybackState == PlaybackState.Playing)
         {
             Thread.Sleep(100);
         }
     }
     catch (Exception ex)
     {
         ex.Message.ToString();
     }
 }
Ejemplo n.º 24
0
 public static void PlayMp3FromUrl(string url)
 {
     Task.Factory.StartNew(() =>
     {
         using (Stream ms = new MemoryStream())
         {
             using (Stream stream = System.Net.WebRequest.Create(url)
                                    .GetResponse().GetResponseStream())
             {
                 byte[] buffer = new byte[32768];
                 int read;
                 while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                 {
                     ms.Write(buffer, 0, read);
                 }
             }
             ms.Position = 0;
             using (WaveStream blockAlignedStream =
                        new BlockAlignReductionStream(
                            WaveFormatConversionStream.CreatePcmStream(
                                new Mp3FileReader(ms))))
             {
                 using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                 {
                     waveOut.Init(blockAlignedStream);
                     waveOut.Play();
                     while (waveOut.PlaybackState == PlaybackState.Playing)
                     {
                         System.Threading.Thread.Sleep(100);
                     }
                 }
             }
         }
     });
 }
Ejemplo n.º 25
0
 public void DownloadFile(string urlAddress, string location)
 {
     using (webClient = new WebClient())
     {
         try
         {
             Uri URL = new Uri(urlAddress);
             // Start downloading the file
             webClient.DownloadFile(URL, location);
             using (FileStream memoryStream = File.OpenRead(location))
             {
                 memoryStream.Position = 0;
                 using (
                     WaveStream blockAlignedStream = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(memoryStream))))
                 {
                     using (_waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                     {
                         _waveOut.Init(blockAlignedStream);
                         _waveOut.Play();
                         while (_waveOut.PlaybackState == PlaybackState.Playing)
                         {
                             Thread.Sleep(100);
                         }
                         _waveOut.Stop();
                         _waveOut.Dispose();
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
 }
Ejemplo n.º 26
0
 public void DisposeWave()
 {
     if (ts.IsCancellationRequested && !MainWindow.instance.bottomTimeSlider.IsMouseOver)
     {
         try
         {
             if (output != null)
             {
                 if (output.PlaybackState == PlaybackState.Playing)
                 {
                     output.Stop();
                 }
                 output.Dispose();
                 output = null;
             }
             if (stream != null)
             {
                 stream.Dispose();
                 stream = null;
             }
         }
         catch (NAudio.MmException mmex) {
             Console.Error.WriteLine(mmex.Message);
         }
     }
 }
Ejemplo n.º 27
0
        public void PlaySound(CachedSound sound)
        {
            switch (sound.Type)
            {
            case TYPE_SOURCE.FILE_LOCAL:
                AddMixerInput(new CachedSoundSampleProvider(sound));
                break;

            case TYPE_SOURCE.FILE_MP3_ONLINE:
                using (MemoryStream mp3file = new MemoryStream(sound.AudioData_FILE_MP3_ONLINE))
                {
                    using (WaveStream blockAlignedStream = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(
                                                                                             new Mp3FileReader(mp3file))))
                    {
                        using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                        {
                            waveOut.Init(blockAlignedStream);
                            waveOut.Play();
                            while (waveOut.PlaybackState == PlaybackState.Playing)
                            {
                                System.Threading.Thread.Sleep(100);
                            }
                        }
                    }
                }
                break;
            }
        }
        public void CanRepositionToNonBlockAlignedPositions()
        {
            BlockAlignedWaveStream    inputStream = new BlockAlignedWaveStream(726, 80000);
            BlockAlignReductionStream blockStream = new BlockAlignReductionStream(inputStream);


            byte[] inputBuffer = new byte[1024];
            int    read        = blockStream.Read(inputBuffer, 0, 1024);

            Assert.AreEqual(1024, read, "bytes read 1");
            Assert.AreEqual(blockStream.Position, 1024);
            CheckReadBuffer(inputBuffer, 1024, 0);

            read = blockStream.Read(inputBuffer, 0, 1024);
            Assert.AreEqual(1024, read, "bytes read 2");
            Assert.AreEqual(2048, blockStream.Position, "position 2");
            CheckReadBuffer(inputBuffer, 1024, 1024);


            // can reposition correctly
            blockStream.Position = 1000;
            read = blockStream.Read(inputBuffer, 0, 1024);
            Assert.AreEqual(1024, read, "bytes read 3");
            Assert.AreEqual(2024, blockStream.Position, "position 3");
            CheckReadBuffer(inputBuffer, 1024, 1000);
        }
Ejemplo n.º 29
0
 private static WaveStream FindCorrectWaveStream(Stream stream)
 {
     try
     {
         WaveStream readerStream = new WaveFileReader(stream);
         if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm && readerStream.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat)
         {
             readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
             readerStream = new BlockAlignReductionStream(readerStream);
         }
         return(readerStream);
     }
     catch { }
     try
     {
         return(new Mp3FileReader(stream));
     }
     catch { }
     try
     {
         return(new AiffFileReader(stream));
     }
     catch
     {
         return(null);
     }
 }
Ejemplo n.º 30
0
 /// <summary>
 /// 播放录音文件
 /// </summary>
 public void StartPlay()
 {
     Task.Factory.StartNew(() =>
     {
         try
         {
             using (var wfr = new WaveFileReader(tempWavFile))
                 using (WaveStream wavStream = WaveFormatConversionStream.CreatePcmStream(wfr))
                     using (var baStream = new BlockAlignReductionStream(wavStream))
                         using (waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                         {
                             waveOut.Init(baStream);
                             waveOut.Play();
                             while (waveOut.PlaybackState == PlaybackState.Playing)
                             {
                                 Thread.Sleep(TimeSpan.FromSeconds(0.1));
                             }
                             WaveOut_PlayStopped(true);
                         }
         }
         catch (Exception ex)
         {
         }
     }, pToken);
 }