Как создать поток в формате JPEG (Live) в C ++ или C # или Java? RTSP? - PullRequest
1 голос
/ 02 марта 2009

Я создаю серверный браузер рендеринга html, который рендерит html и отправляет jpegs мобильному клиенту. Мне нужно выяснить, как создать сервер, который захватывает jpegs и передает их в сеансе клиенту, который я собираюсь написать в j2me

Ответы [ 3 ]

0 голосов
/ 02 марта 2009

Я бы написал сервлет, который обслуживает по одному jpeg за раз, и мидлет, который время от времени запрашивает следующий jpeg.

0 голосов
/ 15 мая 2009

Ну, есть лучшие решения, чем обычные JPEG. Я реализовал системы, подобные этой, и вам лучше использовать видеокодек, такой как MPEG-2, MPEG-4 ASP, H.264 и т. Д., Чем JPEG, и отправлять обновления в виде p-кадров (т. Е. Дельты из предыдущего изображение), и если «слишком большое» изменение (или пропущенное обновление, или новый клиент добавлен в существующий поток), отправьте i-frame.

Даже без использования видеокодека отправка различий часто будет предпочтительнее. Используйте другой механизм кодирования различий.

С точки зрения того, как получить буфер для отправки, вы можете использовать несколько кадровых буферов для рендеринга и настроить код кадрового буфера, чтобы запускать таймер, когда внесены изменения, и во время происходящих изменений отправлять периодические изменения, когда прошло достаточно времени с момента последнего изменения (еще не отправлено), отправьте обновление (возможно, короче, чем первое значение), а также, возможно, включите некоторый вид строба, который вызывает обновление, которое может быть вызвано в определенных случаях (если вы может, например, получить указание завершения загрузки страницы из браузера, что вы можете с небольшой работой в Firefox, изменив chrome и т. д.).

[добавлено]

Примеры других решений можно найти в протоколах и программах удаленных рабочих столов, таких как VNC, RDP (Windows Remote Desktop) и т. Д., И это действительно то, что они делают, опять же, с более сложным сжатием и отслеживанием областей повреждений.

Для кадровых буферов вы можете использовать стандартный код кадрового буфера linux / etc (возможно, самый простой) или даже что-то вроде XVFB (который дает вам больше информации о том, что и почему меняется, чем необработанный кадровый буфер).

0 голосов
/ 02 марта 2009

Не совсем понятно, что вы подразумеваете под «живым», но я предполагаю, что вы говорите о том, чтобы делать запросы к процессу на стороне сервера, который отображает переданные URL и возвращает изображение. Один из самых простых способов сделать это - Java и SWT . Вы можете использовать виджет браузера SWT и захватить холст, а затем преобразовать его в любой тип изображения, который вы хотите. Виджет браузера использует Firefox для отображения страниц, поэтому они должны выглядеть очень хорошо.

...