2016-04-24 6 views
1

То, что я пытаюсь сделать, это воспроизвести звуковой файл для элемента, выбранного в списке. Например: пункт 1 воспроизводит «1.mp3», а пункт 2 воспроизводит «2.mp3» НО, дело в том, что нужно остановить другой звук, а затем воспроизвести. Это делается при воспроизведении wavs:C# Как играть в один 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(); 
     } 
    } 

Но wavs слишком большие, поэтому мне нужна альтернатива.

Я посмотрел всего найти решение, но ничего не работает :(NAudio воспроизводит звуки друг на друга, и я не мог узнать, как использовать NVorbis и oggsharp т.д.

Использование любого формата звук в порядке, я не забочусь. Я просто не могу использовать WAV.

+0

Вы желая, чтобы нажать на кнопку один раз, а затем он играет каждый выбранный файл один за другим? Или он просто воспроизводит один выбранный файл? –

+0

Для начала выберите один выбранный файл. Я могу, возможно, реализовать функцию автовоспроизведения позже на – Matty

ответ

1

есть один экземпляр 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); 
    } 
} 
+0

ok Спасибо, что попробовал mp3 один – Matty

+0

@Matty Я изменил его. –

+0

yeh Я только что понял, извините – Matty