С чистым Java-решением я сомневаюсь, что оно будет работать, но это, конечно, зависит от того, как вы трактуете «видео».
На моем рабочем столе с разрешением 1920x1200 я могу получать около 20 кадров в секунду при использовании робота Java для захвата всего экрана. Поскольку каждое изображение содержит> 6 МБ несжатых данных, мне потребуется пропускная способность более 1 Гбит / с для передачи необработанных данных этих изображений на сервер. Скорее всего, такая большая полоса пропускания недопустима, поэтому вам нужно либо уменьшить количество кадров в секунду, либо применить какое-либо сжатие к изображениям.
Одной из возможностей является сжатие каждого изображения с использованием одного из форматов изображений, поддерживаемых ImageIO. Размер сжатых изображений, конечно, сильно зависит от того, что на самом деле отображается на экране, но производительность компрессоров не особенно хороша. Сжатие до PNG должно обеспечить наилучшую степень сжатия без потерь для большинства содержимого рабочего стола, но по крайней мере мой компьютер способен обрабатывать только около 2 кадров в секунду. При использовании компрессора JPEG с настройками качества по умолчанию достигается около 5 кадров в секунду.
Использование обычных видеокодеков через слой абстракции, такой как jffmpeg , вероятно, обеспечит как лучшую производительность, так и лучшую степень сжатия, но я сомневаюсь, что основные видеокодеки, такие как WMV или H.264, подходят для обычного настольного контента.
Если вам действительно требуется решение на чистом Java (и вы не можете использовать ни одно из доступных автономных программ, которые выполняют то, что вы просите), я бы попытался реализовать свой собственный простой алгоритм сжатия. При обычной работе с рабочим столом различие между большинством последовательных снимков экрана должно быть очень небольшим, поэтому вполне может сработать полная передача первого кадра, а затем реализация алгоритма для приблизительного определения прямоугольников, в которых были внесены изменения, а затем передавать только эти данные в сочетании с JPG или предпочтительно (качественным) сжатием PNG.