c# - C#如何一次播放一个mp3音频文件

标签 c# file audio mp3 wav

我想做的是播放列表框中所选项目的声音文件。例如:项目1播放“1.mp3”,项目2播放“2.mp3”
但问题是,它需要停止其他音频然后再播放。播放波形时会执行以下操作:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex == 0)
        {
            SoundPlayer player = new SoundPlayer();
            player.SoundLocation = "S1.mp3";
            player.Play();
        }
        if (listBox1.SelectedIndex == 1)
        {
            SoundPlayer player = new SoundPlayer();
            player.SoundLocation = "S2.mp3";
            player.Play();
        }
        if (listBox1.SelectedIndex == 2)
        {
            SoundPlayer player = new SoundPlayer();
            player.SoundLocation = "S3.mp3";
            player.Play();
        }
   }

但是波形太大,所以我需要替代方法。

我到处寻找解决方案,但没有任何效果:( NAudio彼此叠加播放声音,我无法找到如何使用NVorbis和oggsharp等的方法。

使用任何格式的音频都可以,我不在乎。我只是不能使用wav。

最佳答案

有一个SoundPlayer实例,在播放下一个音频之前,请停止当前的一个。

public class Sounds
{
    SoundPlayer player = new SoundPlayer();

    public void Play(string file)
    {
        player.Stop();
        player.SoundLocation = file;
        player.Play();
    }
}

对于MP3,可以使用WMPLib.WindowsMediaPlayer

若要以编程方式创建Windows Media Player控件,必须首先添加对wmp.dll的引用,该引用位于\ Windows \ system32文件夹中。
public class Sounds
{
    WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();

    private void PlayFile(String url)
    {
        player.URL = url;
        player.controls.play();
    }
}

用法:
public class MyThing
{
    Sounds sounds = new Sounds();

    string SelectedFile;

    public void OnPlayClick()
    {
        sounds.PlayFile(SelectedFile);
    }
}

关于c# - C#如何一次播放一个mp3音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826508/

相关文章:

java - 将 joda 时区映射到 windows 时区(例如在 C# 中)

c# - ASP.NET MVC 5 @Html.Raw 不适用于 ▶

c# - 按属性对 XML 文件进行排序

image - 为什么我在 MATLAB 中加载此 PNG 时得到全黑/灰度图像?

Delphi - 在共享环境中写入/读取文件

python - 'Cocktail Party' 音频源信号分离

持续运行的 C# 代码 - 服务还是单独的线程?

java - 按里面的文本内容搜索文件

ios - 在其他 swift 文件中调用时,AVAudioPlayer 不会播放声音

javascript - 变量返回未定义?