使用Naudio或其他音频播放/停止MP3队列>>

问题描述 投票:1回答:1

我在停止/暂停Mp3队列时遇到问题。有什么帮助吗?我使用Githup的此类。它工作正常,但无法阻止它:

    public class playr
    {
        private Queue<string> playlist;
        private IWavePlayer player = new WaveOutEvent();
        private WaveStream fileWaveStream;

        public playr()
        {

        }
        public playr(List<string> startingPlaylist)
        {
            playlist = new Queue<string>(startingPlaylist);
        }
        public void PlaySong()
        {
            if (playlist.Count < 1)
            {
                return;
            }

                if (player != null && player.PlaybackState != PlaybackState.Stopped)
                {
                    player.Stop();
                }
                if (fileWaveStream != null)
                {
                    fileWaveStream.Dispose();
                }
                if (player != null)
                {
                    player.Dispose();
                    player = null;
                }

                player = new WaveOutEvent();


                fileWaveStream = new NAudio.Wave.Mp3FileReader(playlist.Dequeue(), new Mp3FileReader.FrameDecompressorBuilder(waveFormat => new NLayer.NAudioSupport.Mp3FrameDecompressor(waveFormat)));
                var stream = new BlockAlignReductionStream(fileWaveStream);

            player.Init(fileWaveStream);
            player.Play();
            player.PlaybackStopped += (sender, evn) => { PlaySong(); };


        }


    }

我从datagridview弹出mp3文件。目标是播放mp3声音和绘制图表。

 private void Play_Click(object sender, EventArgs e)
    {
        try
        {
              playlist = new List<string>();
                for (int item = 0; item < dataGridView1.Rows.Count - 1; item++)
                  {
                      playlist.Add(@"mp3Conversion\sounds\" + dataGridView1.Rows[item].Cells["mp3"].Value.ToString());

                  }

                playr playr = new playr(playlist);

                playr.PlaySong();

        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }

当我单击停止按钮时,它不会停止。有没有添加通知程序或管理队列的方法?

    private void btnStop_Click(object sender, EventArgs e)
    {
        try
        {

            var playr = new playr(playlist);

            playr.stopit();

        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }


    }

我在停止/暂停Mp3队列时遇到问题。有什么帮助吗?我使用Githup的此类。它工作正常,但不能阻止它:public class playr {private Queue playlist; ...

c# charts queue mp3
1个回答
0
投票

我希望帮助您还为时不晚

您不能暂停,因为您正在丢失对定义新对象的对象的引用

© www.soinside.com 2019 - 2024. All rights reserved.