Как воспроизводить mp3 через определенные промежутки времени - C#
Формулировка задачи:
Допустим, есть кнопка button1.
Как сделать так, что бы после нажатия на неё через определённые промежутки времени воспроизводился определённый файл mp3?
Например,
При этом нужно, что кнопки интерфейса оставались активными и работали.
Пауза n мс (n записано в переменной pause1)
Воспроизвести файл 1.mp3
Пауза m мс (m записано в переменной pause2)
Воспроизвести файл 2.mp3
и т.п.
Решение задачи: «Как воспроизводить mp3 через определенные промежутки времени»
textual
Листинг программы
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { PlayList tracks = new PlayList(); tracks.GetAdress(); int interruptionTime = 5000; while (true) { tracks.Play(); Thread.Sleep(interruptionTime); tracks.Next(); Thread.Sleep(interruptionTime); } } } //=========================================================================================================== public class PlayList { private string[] soundAdress; private string[] soundNames; private int Count; private int currentTrack; private Audio player; private int trackTime; public int TrackTime { get { return trackTime; } } public int CurrentTrak { get { return currentTrack; } } /// <summary> /// Количество треков в плейлисте /// </summary> public int TrackCount { get { return Count; } } public string[] TrackInList { get { string[] TrackList = new string[Count]; for (int i = 0; i < Count; i++) { TrackList[i] = soundNames[i]; } return TrackList; } } public PlayList() { currentTrack = -1; Count = 0; this.soundAdress = new string[10000]; this.soundNames = new string[10000]; } public void GetAdress() { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.ShowNewFolderButton = false; dialog.Description = "Выберите папку с музыкой"; if (dialog.ShowDialog() == DialogResult.OK) { AllFolderAndFiles(dialog.SelectedPath); } } private void Add(string adress, string name) { soundAdress[Count] = adress; soundNames[Count] = name; Count++; } private void AllFolderAndFiles(string folder) { DirectoryInfo dir = new DirectoryInfo(folder); FileInfo[] filesMP3 = dir.GetFiles("*.mp3"); FileInfo[] filesWAV = dir.GetFiles("*.wav"); foreach (FileInfo file in filesMP3) { Add(file.FullName, file.Name); } foreach (FileInfo file in filesWAV) { Add(file.FullName, file.Name); } DirectoryInfo[] folders = dir.GetDirectories(); foreach (DirectoryInfo info in folders) { AllFolderAndFiles(info.FullName); } } /// <summary> /// Удалить текущий трек /// </summary> public void Play(int index) { if (player != null) { if (player.State == StateFlags.Paused && currentTrack == index) { player.Play(); } else { player.Open(soundAdress[index]); player.Play(); } } else { player = new Audio(soundAdress[index]); player.Play(); } this.trackTime = (int)player.Duration; this.currentTrack = index; } public void Play() { if (soundAdress[0] != null) { player.Open(soundAdress[0], true); } else { throw new Exception("No track to play!"); } } public void Stop() { player.Stop(); } public void Pause() { player.Pause(); } public void Next() { if (currentTrack < Count) { currentTrack = currentTrack + 1; Play(currentTrack); } } public void Previous() { if (currentTrack > 0) { currentTrack = currentTrack - 1; Play(currentTrack); } } public void PlayTime(int seconds) { player.CurrentPosition = (double)seconds; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д