我无法播放2个波形文件 [英] I could not play 2 wave files
问题描述
我的项目是播放2个波形文件(播放x0.wav然后播放WaitOneSecond.wave然后播放x1.wav)
i添加Windows Media Player .COM而不是工具箱中的Windows Media Player
WaitOneSecond.wave是一个空文件,只是在x0.wav和x1.wav之间插入一个间隙
我的错误是我只能播放x0.wav
如果我从下面的代码中删除了if satement它只播放x1.wav,我不能在这里x0.wav
据我所知,变量
PlayerFinished
如果wav文件结束,
应该等于1
所以如何播放2波文件?
谢谢
My project is to play 2 wave files (play x0.wav then play WaitOneSecond.wave then play x1.wav)
i added Windows Media Player .COM not the Windows Media Player from toolbox
WaitOneSecond.wave is an empty file it is just to insert a gap between x0.wav and x1.wav
my error is i could only play x0.wav
if i removed the if satement from the code below it only play x1.wav ,i could not here x0.wav
as far as i know ,the variable
PlayerFinished
shall be equal to 1 if wav file ended
so how can i play the 2 wave files ?
thanks
using WMPLib;
namespace zenat
{
public partial class Form1 : Form
{
int PlayerFinished = 0;
WMPLib.WindowsMediaPlayer Player;
public Form1()
{
InitializeComponent();
//Sound
Player = new WMPLib.WindowsMediaPlayer();
Player.PlayStateChange +=
new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
Player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
Player.settings.volume = 100;
}
//
private void Player_PlayStateChange(int NewState)
{
if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
PlayerFinished = 1;
}
//
private void Player_MediaError(object pMediaObject)
{
MessageBox.Show("Cannot play media file.");
}
//
private void pronouncClick(object sender, EventArgs e)
{ string sound;
//PlayerFinished = 0;
//Player.URL = "PalySilence4_OneSecond.wav";
PlayerFinished = 0;
sound = "x0.wav";
if (File.Exists(sound)) Player.URL = sound;
else Player.URL = "PalySilence4_OneSecond.wav";//
if (PlayerFinished == 1)//start playing x1.wav if only the x0.wav ended
{
//PlayerFinished = 0;
//Player.URL = "PalySilence4_OneSecond.wav";
PlayerFinished = 0;
sound = "x1.wav";
if (File.Exists(sound)) Player.URL = sound;
else Player.URL = "PalySilence4_OneSecond.wav";
}
}
}
}
推荐答案
以下已解决错误
int NwavFilePlayed = 0; //声明globalley
private void Player_PlayStateChange(int NewState)
{
if((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
{
NwavFilePlayed ++;
if(NwavFilePlayed< 5)
{
//MessageBox.Show (\"NavavFilePlayed=,NwavFilePlayed.ToString());
发音(hellow);
}
//其他MessageBox.Show(不再播放文件,NwavFilePlayed =+ NwavFilePlayed。 ToString());
}
} // Player_PlayStateChange
private void发表(string str)//
{
string sound;
Player = new WMPLib。 WindowsMediaPlayer();
Player.PlayStateChange + =
新WMPLib._WMPOCXEvents_Play StateChangeEventHandler(Player_PlayStateChange);
Player.MediaError + = new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
Player.settings.volume = 100;
//MessageBox.Show(str,\"nwavFilePlayed =+ NwavFilePlayed.ToString());
sound =x+ NwavFilePlayed.ToString()+。wav;
if(File.Exists(sound))Player.URL = sound;
else Player.URL =PalySilence4_OneSecond。 wav; //
}
The following has solved the error
int NwavFilePlayed = 0;//declared globalley
private void Player_PlayStateChange(int NewState)
{
if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
{
NwavFilePlayed++;
if (NwavFilePlayed < 5)
{
//MessageBox.Show("NwavFilePlayed=", NwavFilePlayed.ToString());
Pronounce("hellow");
}
//else MessageBox.Show("no more file to play", "NwavFilePlayed=" + NwavFilePlayed.ToString());
}
}//Player_PlayStateChange
private void Pronounce(string str)//
{
string sound;
Player = new WMPLib.WindowsMediaPlayer();
Player.PlayStateChange +=
new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
Player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
Player.settings.volume = 100;
//MessageBox.Show(str, "NwavFilePlayed=" + NwavFilePlayed.ToString());
sound = "x"+NwavFilePlayed.ToString()+".wav";
if (File.Exists(sound)) Player.URL = sound;
else Player.URL = "PalySilence4_OneSecond.wav";//
}
这篇关于我无法播放2个波形文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!