Z czystym rozwiązaniem Java, wątpię, że to zadziała, ale zależy to oczywiście od tego, co twoja interpretacja "wideo".
Na moim komputerze stacjonarnym o rozdzielczości 1920x1200, jestem w stanie uzyskać około 20 klatek na sekundę podczas używania robota Java do przechwytywania całego ekranu. Ponieważ każdy obraz zawiera> 6 MB nieskompresowanych danych, potrzebowałbym przepustowości przekraczającej 1 Gb/s do przesyłania nieprzetworzonych danych tych obrazów na serwer. Najprawdopodobniej wymaganie tak dużej przepustowości jest niedopuszczalne, więc albo trzeba zmniejszyć liczbę klatek na sekundę, albo zastosować kompresję do obrazów.
Jedną z możliwości jest skompresowanie każdego obrazu przy użyciu jednego z formatów obrazu obsługiwanych przez ImageIO. Rozmiar skompresowanych obrazów będzie oczywiście w dużym stopniu zależał od tego, co faktycznie jest wyświetlane na ekranie, ale wydajność kompresorów nie jest szczególnie dobra. Kompresja do formatu PNG powinna zapewniać najlepszy bezstratny współczynnik kompresji dla większości treści na komputery, ale przynajmniej mój komputer może przetwarzać tylko około 2 klatek na sekundę. Używanie kompresora JPEG z domyślnymi ustawieniami jakości osiąga około 5 klatek na sekundę.
Używanie popularnych kodeków wideo za pośrednictwem warstwy abstrakcji, takiej jak jffmpeg, prawdopodobnie zapewni zarówno lepszą wydajność, jak i lepszy współczynnik kompresji, ale wątpię, czy popularne kodeki wideo, takie jak WMV lub H.264, są odpowiednie dla typowych treści pulpitu.
Jeśli naprawdę potrzebujesz czystego rozwiązania Java (i nie możesz używać żadnego z dostępnych samodzielnych programów, które robią to, o co prosisz), podjąłbym próbę wdrożenia mojego własnego, prostego algorytmu kompresji. Przy typowej aktywności na pulpicie powinna być niewielka różnica między większością następujących po sobie zrzutów ekranu, więc to, co może działać całkiem dobrze, to całkowite przesłanie pierwszej klatki, a następnie zaimplementowanie algorytmu do zgrubnego wykrycia prostokątów, w których dokonano zmian, a następnie przesyłać tylko te połączone z JPG lub preferowaną (jakość) kompresją PNG.
Dawida, mogę zapytać, czy mogę zapoznać się z kodem źródłowym twojej aplikacji do wyświetlania w celach edukacyjnych? Dzięki – user1030434