Это общий вопрос, касающийся технологических решений для разработки продукта.
Моя цель - разработать удаленную поддержку через Интернет (приложение для обмена рабочими столами) с аудио и видео связью.
Моим идеальным решением было бы разработать его как веб-продукт, означающий, что клиентская сторона всегда работает в браузере. Клиентской технологией будет JavaScript (с использованием Google GWT ), а для захвата рабочего стола, представления рабочего стола, аудио и видео я хочу использовать Java-апплеты .
На стороне сервера используется технология Java Servlet с базой данных ( Hibernate и источник данных на основе SQL). Для потоковой передачи данных я планирую использовать RTP / RTSP транспорт по UDP (для настольных данных внутренний протокол будет VNC ( RFB ), но транспорт будет Сам RTP). Для аудио и видео RTP используется для передачи.
Моя базовая версия (прототип) будет работать с использованием сервера ретрансляции, это означает, что клиенты всегда подключаются к серверу (вход в систему, аутентификация, управление сеансом), а сервер всегда передает данные между узлами.
Мой вопрос - правильное ли мое технологическое решение? Я имею в виду, что я решил использовать чистую Java из-за многоплатформенной поддержки. В настоящее время у нас есть Silverlight , которые имеют более продвинутую поддержку десктопов, но ограничены только одной платформой (Windows).
Я также боюсь поддержки Java для аудио / видео технологий. Я видел JMF (Java Media Foundation), который, похоже, поддерживает RTP / RTSP, захват и отображение аудио и видео, но этот пакет выглядит очень устаревшим. Что вы думаете об этом?
Для реального захвата экрана я бы начал с AWT Класс робота. Я знаю, что для высокопроизводительного захвата рабочего стола необходимы более низкоуровневые методы, такие как перехват API или зеркальный драйвер, но мой прототип нацелен на обеспечение 1 FPS для захвата экрана, поэтому я верю, что Java Robot сделает это.