Как уменьшить скорость передачи пакетов с использованием RTP в Java с помощью jlibrtp - PullRequest
0 голосов
/ 15 января 2012

Я просто использую RTP для отправки некоторого буферизованного изображения с клиента на сервер с помощью jlibrtp.

И каждый пакет ограничен 1480 байтами, поэтому мне нужно разделить каждое изображение на несколько частей и отправить байт на сервер, а на стороне сервера нужно подождать, пока он не получит все байты, и преобразовать буферизованное изображение.

Но проблема очень часто возникает, когда размер буферизованного изображения слишком велик, некоторые пакеты будут потеряны. Однако, когда я пытаюсь уменьшить размер, эта проблема не возникает.

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

Итак, я хотел бы спросить, есть ли способы улучшить эту ситуацию?

Большое спасибо!

1 Ответ

0 голосов
/ 20 февраля 2013
  • Переключитесь на формат кодирования видео, такой как MPEG-2, MPEG-4, Theora или WebM.
  • Вы можете отправить отправителю сообщение о том, что вы не получили некоторые пакеты и нуждаетесь в их повторной отправке. Преимущество по сравнению с TCP заключается в том, что вы можете легко отключить время ожидания и перестать спрашивать, когда пакет слишком старый. Я не могу найти его быстро для jlibrtp, но другие библиотеки RTP имеют функцию запроса повторной передачи.
  • Вы можете уменьшить разрешение изображения и отправить меньше данных.
  • Вы можете начать отправлять больше данных. Если эти дополнительные данные являются частью системы прямого исправления ошибок , вы можете восстановить потерянные пакеты.
  • Вы можете сделать и то и другое, уменьшив разрешение и увеличив коррекцию ошибок, чтобы пропускная способность оставалась одинаковой.
...