У меня есть следующий код:
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, так что я могу «отслеживать» и отправлять событие всякий раз, когда данные считываются из файла. Однако моя проблема в том, что я хочу контролировать, сколько байтов читается. Так как функция Read AmplitudeStream вызывается функцией Play (), я понятия не имею, как я могу ограничить число считываемых байтов (это всегда 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?