คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
ทำไมไม่สร้าง playlist ล่ะ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace WindowsMediaPlayer
{
public partial class Form1 : Form
{
private WMPLib.WindowsMediaPlayer wplayer;
private WMPLib.IWMPPlaylist wplayerList;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.wplayer = new WMPLib.WindowsMediaPlayer();
this.wplayerList = wplayer.playlistCollection.newPlaylist("myplaylist");
DirectoryInfo sampleMusic = new DirectoryInfo(@"C:\Users\Public\Music\Sample Music");
Dictionary<string, string> musics = new Dictionary<string, string>();
sampleMusic.GetFiles("*.mp3").ToList().ForEach(f =>
{
wplayerList.appendItem(wplayer.newMedia(f.FullName));
musics.Add(f.Name, f.FullName);
});
this.listBox1.DataSource = new BindingSource(musics, null);
this.listBox1.DisplayMember = "Key";
this.listBox1.ValueMember = "Value";
}
private void buttonPlay_Click(object sender, EventArgs e)
{
this.wplayer.currentPlaylist = wplayerList;
this.wplayer.controls.play();
}
private void buttonStop_Click(object sender, EventArgs e)
{
this.wplayer.controls.stop();
}
}
}
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace WindowsMediaPlayer
{
public partial class Form1 : Form
{
private WMPLib.WindowsMediaPlayer wplayer;
private WMPLib.IWMPPlaylist wplayerList;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.wplayer = new WMPLib.WindowsMediaPlayer();
this.wplayerList = wplayer.playlistCollection.newPlaylist("myplaylist");
DirectoryInfo sampleMusic = new DirectoryInfo(@"C:\Users\Public\Music\Sample Music");
Dictionary<string, string> musics = new Dictionary<string, string>();
sampleMusic.GetFiles("*.mp3").ToList().ForEach(f =>
{
wplayerList.appendItem(wplayer.newMedia(f.FullName));
musics.Add(f.Name, f.FullName);
});
this.listBox1.DataSource = new BindingSource(musics, null);
this.listBox1.DisplayMember = "Key";
this.listBox1.ValueMember = "Value";
}
private void buttonPlay_Click(object sender, EventArgs e)
{
this.wplayer.currentPlaylist = wplayerList;
this.wplayer.controls.play();
}
private void buttonStop_Click(object sender, EventArgs e)
{
this.wplayer.controls.stop();
}
}
}
▼ กำลังโหลดข้อมูล... ▼
แสดงความคิดเห็น
คุณสามารถแสดงความคิดเห็นกับกระทู้นี้ได้ด้วยการเข้าสู่ระบบ
C# อ่านค่า string จาก List เพื่อนำมาเล่นกับ mp3 ไม่ได้ครับ
private void button1_Click(object sender, EventArgs e)
{
List<String> voiceTH = new List<string>);
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
voiceTH = NumberToWordTH("551");
foreach (string i in voiceTH)
{
wplayer.URL = "voicesTH\\" + i + ".mp3";
wplayer.controls.play();
Console.WriteLine("voicesTH\\" + i + ".mp3");
}
}
ผลการ Run ตรง output แสดงผลได้แบบนี้ครับ
voicesTH\five.mp3
voicesTH\thousand.mp3
voicesTH\five.mp3
voicesTH\ten.mp3
voicesTH\1sp.mp3
ซึ่งเอาต์พุตจะเล่นเฉพาะไฟล์เสียงจาก List บรรทัดสุดท้ายได้คือไฟล์ 1sp.mp3 เท่านั้นครับ แต่ที่ผมต้องการคือเล่นไฟล์เสียงหมดทุกบรรทัดครับตามที่วนลูป ไม่ทราบว่าจะต้องแก้ไขยังไงครับ
ผมลองแก้ตามเว็บนี้ http://stackoverflow.com/questions/17644754/how-to-detect-when-a-mp3-file-has-finished-playing แก้แล้วเป็นแบบนี้ครับ พอ Run แล้วกลายเป็นเล่นไฟล์เสียงบรรทัดสุดท้ายคือ 1sp .mp3 วนลูปอยู่ไฟล์เดียว
private void button1_Click(object sender, EventArgs e)
{
List<String> voiceTH = new List<string>);
voiceTH = NumberToWordTH("5051");
wplayer = new WMPLib.WindowsMediaPlayer();
foreach (string i in voiceTH)
{
tmr.Stop();
tmr.Tick += new EventHandler(tmr_Tick);
wplayer.URL = "voicesTH\\" + i + ".mp3";
wplayer.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wplayer_PlayStateChange);
wplayer.controls.play();
Console.WriteLine("voicesTH\\" + i + ".mp3");
}
}
void wplayer_PlayStateChange(int NewState)
{
if (NewState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
{
tmr.Start();
}
}
private void tmr_Tick(object sender, EventArgs e)
{
tmr.Stop();
wplayer.controls.play();
}