Как обслуживать внутреннюю ip камеру потоком mjpeg через сервлет? - PullRequest
3 голосов
/ 05 января 2012

Я работаю над проектом, в котором у меня есть простая IP-камера с потоком mjpg с внутренним адресом и веб-сервером. Я хотел бы подать питание камеры через мой сервлет, чтобы камера не требовала переадресации портов для каждой установки. Моя идеальная ситуация состояла бы в том, что пользователь вводил бы URL-адрес только для местоположения mjpg (расположенного в своей сети), а сервлет обрабатывал бы остальное.

Я совершенно не понимаю, как начать реализовывать это или, если это вообще возможно, поскольку я сам не создаю поток mjpg, я использую тот, который уже существует. Есть ли способ сделать это, не делая непристойное количество запросов на мой веб-сервер?

Еще одна проблема, с которой я столкнулся, заключается в том, что я ограничен библиотеками, которые будут работать в J2ME.

Ответы [ 2 ]

1 голос
/ 05 января 2012

В сервлете вы можете просто проверить HttpRequestObject на предмет URL, метода и, возможно, принять заголовок, затем создать HttpURLConnection с IP-адресом соответствующей камеры, установить соединение.Когда вы получите ответ от камеры, скопируйте соответствующие записи из ответа и установите их в объекте ServletResponse, а затем получите входной поток ответа камеры и выходной поток для запроса клиента и скопируйте байты из одного потока в другой.и закройте все, когда закончите.

Если вы сможете развернуть что-то вроде Джерси, эталонной реализации JAX-RS, это будет еще проще.

0 голосов
/ 05 января 2012

Хорошо. То есть, вы хотите подключить несколько камер к одному сервлету через прокси?

Это не должно быть слишком сложно. Вам просто нужно открыть сокет-соединение с запрошенным URL в вашем сервлете.

Предполагая, что вы используете HTTP, если у вас был запрос на "http://myservlet/servlet?url=http://camera_url_here",, вы просто должны открыть соединение с URL-адресом камеры и записать полученные байты в выходной поток HttpServletResponse. Соединения сокетов на карте, так что вам не нужно подключаться к одной и той же камере дважды. Не забудьте скопировать / установить правильные типы MIME в объекте HttpServletResponse.

Вы смотрели на http://www.videolan.org/vlc/streaming.html? Я почти уверен, что он уже может это сделать.

...