Я делаю VOIP, вызывая приложение для Android. где я частично завершил это с использованием простого UDP без использования SIP, RTP и т. д ...
Когда я пробую это в моей домашней сети, качество очень хорошее.
Но когда я использую его через Интернет, качество звука очень плохое для дрожания.
Теперь дело в стороне получателя, мне нужно ЗАКАЗАТЬ полученный пакет. Я не хочу использовать RTP, так как он требует дополнительного кодирования в данный момент.
В цикле приема я постоянно получаю пакет UDP и отправляю его на динамик.
Мне нужно буферизовать полученные пакеты и отправить их оратору.
While(true){
byte[] data = new byte[..];
Udpsocket.receive(data);
// Store data in a big buffer. after receiving enough packets say 500 packets
// properly send to Speaker in proper order
}
Я искал Linux TCP-код для переупорядочения пакетов, но он очень сложен для меня.
Подскажите, пожалуйста, как эффективно изменить порядок? Я имею в виду, сколько данных мне нужно буферизовать и т. Д. И т. Д., Как долго мне нужно ждать данных ..
Мы будем благодарны за любые предложения, примеры кода или простой алгоритм переупорядочения пакетов UDP.
Спасибо