В последнее время я пытаюсь транслировать удаленный рабочий стол с помощью ffmpeg. Цель состоит в том, чтобы иметь возможность отправлять то, что показано на одном из экранов компьютера, на другой компьютер, а также выбирать такие параметры, как выходное разрешение и т.д.
Это небольшое, почти рабочее доказательство концепции. Когда я закончу, я смогу заменить VNC, используя потоковую передачу ffmpeg с x2x или синергию для пересылки событий клавиатуры и мыши.
Теперь я могу начать потоковую передачу, используя:
ffmpeg -f x11grab -s "1600x1200" -i ":0" \
-f alsa -i pulse \
-s 800x600 -b 200k -f mpegts - \
| mplayer -cache 1024 -
#
# I have pulse audio configured so that `-i pulse` will
# The output can sent through for example netcat to another host
#
Задержка зависит от параметров кодирования. С этими параметрами задержка между обновлением экрана и обновлением видео составляет около 800 мс.
То, чего я пытаюсь достичь:
- Достигните времени ожидания 100 мс.
Когда
mplayer
выполняется, он жалуется, что не может искать в потоковом режиме Lear, и нет звука. У меня все еще есть звук, когда я сохраняю вывод в файл и играю его.EDIT: после добавления
-cache
сообщения для поиска в линейных потоках больше не отображаются. Изменение формата вывода на-f mpegts
заставляет звук работать.Было бы замечательно, если бы кодирование не занимало 100% одного из ядер процессора (вторичная цель).
После некоторого поиска в Интернете я думаю, что эти проблемы связаны с кодеками / опциями, которые я должен использовать. Пока не знаю различий между существующими возможностями. Не могли бы вы дать мне несколько вариантов, которые могли бы решить мои проблемы? Кроме того, является ли VLC хорошей альтернативой, и если да, то какие будут эквивалентные команды для потоковой передачи с одного рабочего стола на другой?