我无法播放2个波形文件 [英] I could not play 2 wave files

查看:64
本文介绍了我无法播放2个波形文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的项目是播放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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆