如何在foreach循环中使用媒体播放器播放一些音频
本文关键字:播放 媒体播放器 音频 foreach 循环 | 更新日期: 2023-09-27 18:25:40
我在Textbox中有一句话,例如,我希望MediaPlayer从文件夹中读取它。为了做到这一点,我写了一些代码来获取句子中的每个单词。现在我想播放它的音频。但我做不到。MediaPlayer只播放最后一个。我认为这是因为阻止MediaPlayer在每个循环中播放或播放速度非常快。我如何暂停播放,然后允许循环再次继续(不使用计时器)?
string vocab = textBox2.Text.ToLower() + " ";
string word = null;
foreach (char c in vocab)
{
word += c;
if (c == ' ')
{
axWindowsMediaPlayer1.URL = ("some url parts for example" + word.TrimEnd() + ".mp3");
// MessageBox.Show(word.TrimEnd());
word = null;
}
}
当我取消注释// MessageBox.Show(word.TrimEnd());
时,它会播放,但我不想使用消息框。感谢
首先,您不需要手动收集所有这些文件名。
代替
string vocab = textBox2.Text.ToLower() + " ";
string word = null;
foreach (char c in vocab)
{
word += c;
if (c == ' ')
{
axWindowsMediaPlayer1.URL = ("some url parts for example" + word.TrimEnd() + ".mp3");
word = null;
}
}
你可以简单地做:
string[] fileNames = textBox2.Text
.ToLower().Split(" ").Select(word => String.Format("C:'some url parts for example'{0}.mp3", word.Trim());
它提取句子,将其转换为小写,通过空格将其拆分为一组单词。然后,修剪每个单词并将其转换为mp3
文件的路径。
如果播放音频文件,您可以将字符串转换为文件列表,将其创建为播放列表,然后使用播放器播放:
string tempPlaylistFilename = Path.Combine(Path.GetTempPath(), "TemporaryPlaylist.m3u");
string[] fileNames = textBox2.Text
.ToLower()
.Split(" ")
.Select(word => String.Format("C:'some url parts for example'{0}.mp3", word.Trim());
File.WriteAllLines(fileNames)
axWindowsMediaPlayer1.URL = tempPlaylistFilename;
你可以把这个播放列表保存在任何你想保存的地方,我只是决定使用临时文件夹。