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