次のコードがあります。
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 を実装する私が作成したクラスです。ただし、私の問題は、読み取るバイト数を制御したいということです。AmplitudeStream の Read 関数は 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
}
私が知りたいのですが。ありがとう!それとは別に、AmplitudeStream の入力として WaveChannel32 クラスを使用しない方法はありますか?