3

В последнее время я пытаюсь транслировать удаленный рабочий стол с помощью 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 хорошей альтернативой, и если да, то какие будут эквивалентные команды для потоковой передачи с одного рабочего стола на другой?

1 ответ1

0

Потоковая передача с рабочего стола A на рабочий стол B представляет собой интересную проблему. Если вам не нужно видео / аудио, вы можете вместо этого проверить протокол NX. Это гораздо эффективнее, чем VNC. FreeNX - это сервер, а NoMachine и другие делают NX-клиентов. Есть и другие серверы - бесплатные и коммерческие.

Также есть работа, выполняемая на высокопроизводительном удаленном рабочем столе, SPICE, в качестве проекта F/LOSS. Я думаю, что Redhat берет на себя инициативу. http://spice-space.org/

Я не знаю, если это полезные ответы, но, возможно, просто приводит к чему-то более полезному?

Для потокового видео, вероятно, необходимо избегать накладных расходов на полный протокол рабочего стола.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .