나는 다음과 같은 코드가 있습니다 :NAudio C# IWavePlayer에서 읽은 바이트 수를 제어하는 방법은 무엇입니까?
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 클래스를 사용하지 않는 방법이 있습니까?
안녕하세요. 실제로, 내가 의미하는 바는 .play() 함수를 사용하여 읽는 바이트 수를 제어 할 수 있기를 원했던 것입니다. 현재 play 함수를 사용할 때마다 항상 35280 바이트를 읽습니다. 한 번에 8192 바이트 만 읽길 원합니다. – user488792