Добавление порядкового номера (заголовка) к пакетам - VoIP - Java - PullRequest
0 голосов
/ 14 февраля 2012

Я работаю над разработкой базовой системы передачи голоса по IP в Java.Где аудио может быть отправлено обратно с отправителем и получателем, используя потоки.Тем не менее, они являются некоторой потерей пакетов при использовании различных пакетов дейтаграмм.Поэтому я пытаюсь добавить заголовок для каждого отправляемого пакета, чтобы было легче определить, какой именно пакет потерян при получении, чтобы мы могли разработать некоторые методы компенсации.

Я что-то запустил, но яне уверен, что это богатая идея, общая идея заключалась в том, чтобы добавить 2 байта в массив и выделить эти 2 дополнительных байта для информации заголовка, которая является последовательным числом для каждого пакета ...

 Vector<byte[]> voiceVector = new Vector<byte[]>();

 int recordTime = 30;

 System.out.println("Recording Audio...");

 for (int i = 0; i < Math.ceil(recordTime / 0.032); i++)

 byte[] block = recorder.getBlock();

 DatagramPacket packet = new DatagramPacket(fPacket, fPacket.length, clientIP, PORT);

 //Send it
 sending_socket.send(packet);
 voiceVector.add(block);

У кого-нибудь есть идеи?Я плохо знаю, как создать новый массив, который содержит голосовой вектор и 2 дополнительных байта, но я не уверен, как это сделать, поскольку я некоторое время использовал java ...

Cheers

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Не используйте TCP - это увеличит накладные расходы на время ожидания из-за его подтверждений.Вероятно, вам следует использовать реализацию RTP в качестве транспорта пакетов.Он работает по UDP и добавляет временные метки и другие вещи, которые вы найдете полезными и необходимыми.

Проверьте это: http://en.wikipedia.org/wiki/Real-time_Transport_Protocol

Не реализуйте это самостоятельно - найдите готовыйбиблиотека, которая уже делает это.

0 голосов
/ 14 февраля 2012

Я бы посоветовал вам сначала реализовать это, используя TCP, и только когда это работает, попробуйте использовать UDP. Надежный UDP - сложная тема, и обнаружение пропущенных пакетов - это только начало.

Даже если вам нужно отправить одно и то же аудио на несколько приемников, все равно может быть проще использовать TCP. (И, возможно, более быстрая сетевая карта, если вам нужно)

...