Я пытаюсь написать RTP-сервер в Java, и я использую Xuggler для декодирования mp3-файлов.RTP Server в Java с Xuggler
Декодирование часть выглядит следующим образом:
while(container.readNextPacket(packet) >= 0) {
if(packet.getStreamIndex() == streamID) {
IAudioSamples samples = IAudioSamples.make(1,decoder.getChannels());
decoder.decodeAudio(samples, packet, 0);
IAudioSamples resampled_samples = IAudioSamples.make(1,2);
resampler.resample(resampled_samples, samples, samples.getNumSamples());
byte[] target = new byte[(int) (resampled_samples.getNumSamples() * resampled_samples.getSampleSize())];
resampled_samples.get(0, target, 0, target.length);
timestamp+=target.length;
s.sendData(target);
}
}
Моя проблема заключается в том, что буфер на стороне клиента переполнена потому, что сервер посылает многих пакетов.
Так что мой вопрос: есть ли возможность ждать «следующего кадра», кроме «Thread.sleep()», потому что ожидание должно быть очень точным.