Подтвердить что ты не робот

Java: получение множественного HTTP-ответа

Я пишу клиентское приложение Java для получения живого видео M-JPEG с IP-камеры. Видео отправляется камерой как бесконечное многостраничное HTTP-сообщение, в котором каждая часть представляет собой один кадр JPEG. Мне нужно обработать каждый из этих фреймов по мере их поступления, поэтому я надеюсь, что есть способ сделать HTTP-запрос, который асинхронно запускает событие при получении каждой части сообщения/видеокадра.

Кто-нибудь знает какие-либо библиотеки, которые могут это сделать? Все примеры, которые я могу найти в Google, не будут работать, потому что они используют блокирующие вызовы, которые только анализируют ответ и разбивают его на части после того, как весь ответ завершен (что явно не будет работать для бесконечного ответа).

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

4b9b3361

Ответ 1

Этот проект: http://fmj-sf.net, имеет класс для разбора ответов multipart/x-mixed-replace: http://fmj-sf.net/doc/fmj/net/sf/fmj/media/parser/MultipartMixedReplaceParser.html

Поиск кода google с помощью: multipart/x-mixed-replace lang: java

Я нашел несколько других примеров, например: http://www.google.com/codesearch?as_q=multipart%2Fx-mixed-replace&btnG=Search+Code&hl=en&as_lang=java&as_license_restrict=i&as_license=&as_package=&as_filename=&as_case=

http://www.google.com/codesearch/p?hl=en#FCmBlvKk1MA/cambozola-0.50/src/com/charliemouse/cambozola/shared/CamStream.java&q=multipart/x-mixed-replace%20lang:java

http://www.google.com/codesearch/p?hl=en#Xnnd-VJLMBY/src/Grabber.java&q=multipart/x-mixed-replace%20lang:java

Ответ 2

Попробуйте HttpClient из Apache Commons. Исходный код имеет пару классов, которые показывают, как читать в многострочном потоке.

Ответ 3

Я написал классы, которые обрабатывают многочастные запросы для моего проекта Sceye-Fi, HTTP-сервер, который использует классы com.sun.net.httpserver, которые поставляются с java 6, чтобы получать закачки фотографий с карты Eye-Fi. Теоретически ничто не должно препятствовать ему работать с бесконечным многостраничным запросом. Надеюсь, это поможет.