SoundPlayer实现逐个播放列表中的声音文件

先前用过System.Media.SoundPlayer类来播放声音文件,现在需实现逐个播放列表中的文件,于是对先前代码稍做修改:

string[] list = new string[] { @"F:\mzwu_com\sound1.wav", @"F:\mzwu_com\sound2.wav", @"F:\mzwu_com\sound3.wav" };

SoundPlayer player = new SoundPlayer();
for(int i=0;i<list.Length;i++)
{
    player.SoundLocation = list[i];
    player.Play();
}

结果始终只能播放列表中最后一个声音文件,一查,原来Play方法是个异步方法,改用PlaySync方法可解决问题:

string[] list = new string[] { @"F:\mzwu_com\sound1.wav", @"F:\mzwu_com\sound2.wav", @"F:\mzwu_com\sound3.wav" };

SoundPlayer player = new SoundPlayer();
for(int i=0;i<list.Length;i++)
{
    player.SoundLocation = list[i];
    player.PlaySync();
}

这样的缺点是会阻塞当前线程,好在我的声音文件都很短,暂时凑合用。

SoundPlayer的优缺点

player.SoundLocation = @"F:\mzwu_com\sound1.wav"; //本地文件
player.SoundLocation = "http://www.mzwu.com/sound1.wav"; //网络文件
player.Stream = Properties.Resources.sound1; //数据流

SoundPlayer播放文件支持:本地文件、网络文件、数据流,但它只能播放wav!只能播放wav!只能播放wav!

评论: 0 | 引用: 0 | 查看次数: 2142
发表评论
登录后再发表评论!