我有以下代码:
IWavePlayer player = new WaveOut();
WaveStream reader = new WaveFileReader(filePath);
WaveChannel32 input = new WaveChannel32(reader);
AmplitudeStream ampStream = new AmplitudeStream(input);
ampStream.AmplitudeEventHandler += new EventHandler<AmplitudeArgs>(AmplitudeStreamHandler);
player.Init(ampStream);
player.Play();
AmplitudeStream 是我创建的一个实现 WaveStream 的类,这样每当从文件中读取数据时,我就可以“跟踪”并发送事件。但是,我的问题是我想控制读取多少字节。由于 Play() 函数正在调用 AmplitudeStream 的 Read 函数,因此我不知道如何限制读取的字节数(始终为 35,280)。
这个怎么做?我正在使用 Play() 命令,因为我希望我的文件能够播放以便我可以观察。因此,如果在 Read() 命令期间有另一种播放文件的方法,它看起来像:
byte[] buffer = byte[8192]
int bytesRead = 0;
do{
bytesRead = ampStream.Read(buffer,0,buffer.Length);
}while(bytesRead != 0);
@override
private int Read(byte[] buffer, int offset, int count)
{
//some command to play the file here
}
我想知道。谢谢!除此之外,有没有办法不使用 WaveChannel32 类作为我的 AmplitudeStream 的输入?