Перейти в хранилище документации
Обратиться в техническую поддержку
Существует возможность получения на Сервер видеоизображения с экранов удаленного Клиента, системного звука и звука с микрофона через драйвер FFmpeg с помощью RTSP-трансляции. Для этого необходимо:
Открыть порт для получения данных с удаленного Клиента.
Примечание.
Открытый порт должен быть не занят. Для проверки доступности порта можно использовать следующую команду:
netstat -ano | findstr :<Порт>
Рекомендуется задавать порты выше 10000.
Добавить устройство 1 channel device и в поле IP-адрес задать адрес в формате:
listenrtsp://<IP-адрес Cервера>:<Порт>
Примечание
RTSP-ссылка задается опционально, формат:
listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>
Например:
listenrtsp://127.0.0.1:1554/live1.sdp
где
127.0.0.1 – IP-адрес Сервера;
1554 – RTSP-порт, который должен быть не занят. Для проверки доступности порта можно использовать команду из пункта 1а;
live1.sdp – RTSP-ссылка.
Выполнить команду следующего формата:
ffmpeg.exe -f gdigrab -video_size 640x480 -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
- параметр Кодек может принимать значения mpeg2video, mpeg4, h264, hevc;
- параметры -video_size 640x480 и -muxdelay 0.1 являются необязательными и могут быть убраны или изменены.
При необходимости в команде могут быть заданы дополнительные параметры:
Поддерживаемые параметры | Описание |
---|---|
-draw_mouse <int> | Отрисовка курсора мыши. Возможные значения от 0 до 1, по умолчанию 1 |
-show_region <int> | Отрисовка границ по линии захвата. Возможные значения от 0 до 1, по умолчанию 1 |
-framerate <video_rate> | Значение частоты кадров (количество кадров) |
-video_size <image_size> | Размер видеоизображения (пиксели) |
-muxdelay <int> | Максимальная задержка демультиплексора-декодирования (секунды) |
-offset_x <int> | Отступ по оси Х области захвата (пиксели). Значение по умолчанию 0 |
-offset_y <int> | Отступ по оси Y области захвата (пиксели). Значение по умолчанию 0 |
После выполнения команды будет запущена трансляция экрана удаленного Клиента.
Примечание.
На удаленном Клиенте можно выполнить команды для трансляции экрана.
При наличии на удаленном Клиенте нескольких экранов, для того чтобы транслировать их все, необходимо использовать команду вида:
ffmpeg.exe -f gdigrab -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
параметр -video_size отсутствует, тем самым используется всё видеопространство.
Также при наличии нескольких экранов на удаленном Клиенте их можно транслировать отдельно.
Например, чтобы транслировать только первый экран можно использовать команду:
ffmpeg.exe -f gdigrab -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
Дополнительно можно указать параметр -pix_fmt для выбора цветовой схемы, т.к некоторые видеокодеки могут работать некорректно:
-pix_fmt yuv420p
Чтобы транслировать только второй экран можно использовать команду:
ffmpeg.exe -f gdigrab -offset_x 1920 -offset_y 0 -video_size 1920x1080 -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
параметр -offset_x 1920 выполняет отступ по оси Х вправо на 1920 пикселей, таким образом пропуская первый экран и используя второй.
Если нужно транслировать третий экран удаленного Клиента, то значение параметра -offset_x будет равно -offset_x 3840, т.е отступ по оси Х вправо на 3840 пикселей, таким образом пропуская первый и второй экраны и используя третий.
Примечание.
Значение параметра -offset_x зависит от разрешения экрана. Если разрешения экранов отличаются, то для трансляции отдельного экрана нужно учитывать его разрешение.
Возможно комбинирование трансляций из нескольких определенных экранов.
Например, для трансляции первого и второго экрана можно использовать команду:
ffmpeg.exe -f gdigrab -offset_x 0 -offset_y 0 -video_size 3840x1080 -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
значение параметра -video_size 3840x1080 означает сумму ширины первого и второго экранов.
Для трансляции второго и третьего экранов можно использовать команду:
ffmpeg.exe -f gdigrab -offset_x 1920 -offset_y 0 -video_size 3840x1080 -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
параметр -offset_x 1920 выполняет отступ по оси Х на ширину первого экрана;
значение параметра -video_size 3840x1080 означает сумму ширины второго и третьего экранов.
При использовании трёх и более экранов на удаленном Клиенте можно использовать декодирование формата NVIDIA в FFmpeg.
Для этого выполнить команду следующего вида:
ffmpeg.exe -f gdigrab -i desktop -c:v <Кодек> -f rtsp -muxdelay 0.1 "listenrtsp://<IP-адрес Cервера>:<Порт>/<RTSP-ссылка>"
где
параметр Кодек может принимать значения h264_nvenc (H264), hevc_nvenc (H265).
Примечание.
Для графических карт Intel нужно использовать кодеки h264_qsv и hevc_qsv, а для карт AMD − h264_amf и hevc_amf.
Максимальное разрешение экрана, c которым может работать NVENC h.264, составляет 4096x4096 пикселей. Максимальное разрешение экрана, с которым может работать NVENC h.265, составляет 8192x8192 пикселей.
Например, при использовании NVENC h.264 три экрана с разрешением 1920x1080 пикселей не будут работать.