示例#1
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     if (playbackState != StreamingPlaybackState.Stopped)
     {
         if (waveOut == null && bufferedWaveProvider != null)
         {
             Debug.WriteLine("Creating WaveOut Device");
             waveOut = CreateWaveOut();
             waveOut.PlaybackStopped += OnPlaybackStopped;
             volumeProvider           = new VolumeWaveProvider16(bufferedWaveProvider);
             volumeProvider.Volume    = volumeSlider1.Volume;
             waveOut.Init(volumeProvider);
             progressBarBuffer.Maximum = (int)bufferedWaveProvider.BufferDuration.TotalMilliseconds;
         }
         else if (bufferedWaveProvider != null)
         {
             var bufferedSeconds = bufferedWaveProvider.BufferedDuration.TotalSeconds;
             ShowBufferState(bufferedSeconds);
             // make it stutter less if we buffer up a decent amount before playing
             if (bufferedSeconds < 0.5 && playbackState == StreamingPlaybackState.Playing && !fullyDownloaded)
             {
                 Pause();
             }
             else if (bufferedSeconds > 4 && playbackState == StreamingPlaybackState.Buffering)
             {
                 Play();
             }
             else if (fullyDownloaded && bufferedSeconds == 0)
             {
                 Debug.WriteLine("Reached end of stream");
                 StopPlayback();
             }
         }
     }
 }
示例#2
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     if (playbackState != StreamingPlaybackState.Stopped)
     {
         if (this.waveOut == null && this.bufferedWaveProvider != null)
         {
             Debug.WriteLine("Creating WaveOut Device");
             this.waveOut               = CreateWaveOut();
             waveOut.PlaybackStopped   += new EventHandler(waveOut_PlaybackStopped);
             this.volumeProvider        = new VolumeWaveProvider16(bufferedWaveProvider);
             this.volumeProvider.Volume = this.volumeSlider1.Volume;
             waveOut.Init(volumeProvider);
             progressBarBuffer.Maximum = (int)bufferedWaveProvider.BufferDuration.TotalMilliseconds;
         }
         else if (bufferedWaveProvider != null)
         {
             var bufferedSeconds = bufferedWaveProvider.BufferedDuration.TotalSeconds;
             ShowBufferState(bufferedSeconds);
             // make it stutter less if we buffer up a decent amount before playing
             if (bufferedSeconds < 0.5 && this.playbackState == StreamingPlaybackState.Playing && !this.fullyDownloaded)
             {
                 this.playbackState = StreamingPlaybackState.Buffering;
                 waveOut.Pause();
                 Debug.WriteLine(String.Format("Paused to buffer, waveOut.PlaybackState={0}", waveOut.PlaybackState));
             }
             else if (bufferedSeconds > 4 && this.playbackState == StreamingPlaybackState.Buffering)
             {
                 waveOut.Play();
                 Debug.WriteLine(String.Format("Started playing, waveOut.PlaybackState={0}", waveOut.PlaybackState));
                 this.playbackState = StreamingPlaybackState.Playing;
             }
             else if (this.fullyDownloaded && bufferedSeconds == 0)
             {
                 Debug.WriteLine("Reached end of stream");
                 StopPlayback();
             }
         }
     }
 }