Отправка картинок через UDP - PullRequest
0 голосов
/ 08 августа 2011

Я хочу написать приложение на Java, которое позволяет двум клиентам общаться через веб-камеру.Это работает так, как оба клиента подключаются к веб-камере, которая делает снимки с определенной частотой кадров (возможно, 20 в секунду), затем уменьшает размер и разрешение, а затем отправляет его другому клиенту через пакет UDP.У меня вопрос - должен ли я отправлять каждое изображение в отдельном пакете датаграмм?Я читал, что они могут вместить не более половины килобайта, поэтому нужно ли так много вырезать каждую картинку?Или я должен разделить его на несколько пакетов?

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Вы уверены, что хотите передать целые изображения вместо использования алгоритма / кодека, который передает только то, что необходимо обновить?

Если вы выберете второй вариант, вы можете взять некоторые идеи из этого предыдущего вопроса и уже использованной и протестированной для этой цели библиотеки. Я считаю, что я бы пошел с VLC Java-привязки , если бы мне пришлось это сделать. Вы должны оценить, какой кодек лучше всего подходит для вашей конкретной цели (битрейт, качество и т. Д.).

Если вы все же хотите передавать изображения, я бы посоветовал разбить их на дейтаграммы udp, помните, что они должны быть каким-то образом пронумерованы / помечены, чтобы клиент мог восстанавливать изображение по мере поступления пакетов (они не обязательно приходят в в том же порядке, в котором вы их отправляете), вам также нужно подумать, что нужно делать клиенту, когда некоторые пакеты не приходят (сбросить образ, запросить предыдущий пакет и т. д.).

Еще одна мысль: максимальный размер датаграммы udp может быть не лучшим вариантом, ваш сервер-клиент, возможно, должен реализовать алгоритм и согласовать размер кадра udp в зависимости от скорости передачи.

0 голосов
/ 08 августа 2011

Что вы должны делать, это кодировать видеопоток.Оставьте сетевой слой в покое, позвольте ему выполнять фрагментацию за вас.

Кроме того, если вы отправляете видео по UDP, вы, вероятно, захотите добавлять ключевой кадр каждые 2 секунды или около того.

Не отправляйте каждый кадр как свое собственное изображение.Используйте видео компрессор.

...