1、定义播放器回调函数
WaveFormat m_Format = new WaveOutPlayer.WaveFormat(1000, 1);
m_Player = new WaveOut(-1, m_Format, 1000* 2, 2, new BufferFillEventHandler(Filler));//将送出数据的方法代理给WaveOut(提供数据)
m_Player.Play();
2、实现回调函数
//由播放类调用,将缓冲区内的数据给入data中进行播放
private int Filler(IntPtr data, int size)
{
//外部定义的一个变量SelectIndex
if ( SelectIndex < 1)
{
Array.Clear(voicedata, 0, voicedata.Length);
System.Runtime.InteropServices.Marshal.Copy(voicedata, 0, data, size);
return size;
}
//has_voice 在需要播放的位置将次变量变true
if (has_voice)//当前有待播放数据,且读取位置与写入位置不同
{
System.Runtime.InteropServices.Marshal.Copy(voicedata, 0, data, size);
has_voice = false;
}
return size;
}