В течение последних нескольких месяцев мы с разработчиком работали над апплетом для разделения экрана, который транслируется на медиа-сервер, такой как Wowza или Red5, но независимо от того, что мы делаем, задержка составляет около 5 секунд, что слишком долго для живого приложения, где люди взаимодействуют друг с другом. Мы пробовали xuggle, разные кодировщики, разные проигрыватели, разные сети, разные медиасерверы и даже локальную потоковую передачу. Значительная задержка.
Итак, я начинаю удивляться ...
Достаточно ли быстро работает Java для обмена экранами в реальном времени?
Я видел много апплетов для записи экрана, написанных на Java, но ни один из них не транслировался в прямом эфире. Все, что делается вживую, например GoToMeeting, похоже, использует C ++. Я думаю, может быть, есть причина.
Это не проблема сжатия. Используя ScreenVideo, мы сжимали часовой поток до примерно 100 МБ, и у нас достаточно пропускной способности. Процессор также не перегружен при сжатии, но, похоже, он занимает слишком много времени. Мы получаем лучшие результаты из некоторого кода, извлеченного из BigBlueButton, но, тем не менее, задержка ужасна.
Потоковая веб-камера, с другой стороны, хороша и быстро. Почти без задержек. Итак, проблема в апплете.
Единственная другая идея, о которой я могу подумать, это как-то эмулировать веб-камеру с Java. Не уверен, будет ли это быстрее или нет.
Идеи? Или я должен просто отказаться от Java и сделать это в C ++? Я бы не хотел этого делать, потому что тогда мне пришлось бы создавать разные версии для разных платформ, но если это единственный путь, то это единственный способ.