VideoLAN - VLC media player. Воспроизведение видео на терминалах

В WTware встроен VideoLAN - VLC media player.

Включается строчкой в конфиге: application = vlc

Работает только в WTware для x86 и только с video=...(U). Никак нельзя запустить VLC, если video=...(F) или video=...(X). Если на вашей машине с 1024Мб памяти не запускается ни один драйвер видео из набора (U), пишите, будем чинить.

В UEFI сборке WTware и в WTware для Raspberry Pi VLC ещё не сделан.

Самый простой пример

Чтобы просто запустить VLC и увидеть, что оно работает, напишите в конфигурационный файл три строки:

application = vlc
vlc_files = vlc.jpg
vlc_cmdline = file:///vlc_files/vlc.jpg --loop

C таким конфигурационным файлом на экране появится оранжево-зелёная картинка с текстом "VLC for WTware test screen." Что означает каждая из строк конфигурационного файла:

application = vlc

Включает проигрыватель VLC вместо обычного RDP клиента.

vlc_files = vlc.jpg

Указывает терминалу скачать файл vlc.jpg из каталога VLC на TFTP или HTTP сервере (скорее всего, полный путь C:\ProgramData\WTware\VLC). Файл будет скачан в память терминала и доступен как //vlc_files/vlc.jpg

vlc_cmdline = file:///vlc_files/vlc.jpg --loop

Указывает проигрывателю VLC открыть файл //vlc_files/vlc.jpg, а волшебое слово --loop указывает бесконечно продолжать воспроизведение, без него VLC закроется после окончания воспроизведения.

VLC и виртуальные экраны

Проигрыватель VLC можно поместить на второй виртуальный экран. Подробно про виртуальные экраны написано в документации, а здесь пример конфигурационного файла, в котором на первом виртуальном экране подключение к RDP серверу 192.168.1.1, а на втором проигрыватель VLC с тестовой картинкой. Переключаться между экранами клавишами Win-1..Win-2, Win-стрелки или через всплывающее меню внизу справа:

server=192.168.1.1
next screen
application = vlc
vlc_files = vlc.jpg
vlc_cmdline = file:///vlc_files/vlc.jpg --loop

Видео из памяти терминала

Картинка это ещё не видео. Не интересно. Можно записать видеофайл в каталог VLC и указать его имя вместо vlc.jpg в параметрах vlc_files= и vlc_cmdline=. Тогда проигрыватель VLC будет воспроизводить видео. Файлы, указаные в параметре vlc_files=, будут загружены в оперативную память терминала при загрузке. Не стоит указывать файлы размером в гигабайты: будет загружаться долго и оперативной памяти может не хватить. Файлы загружаются быстрее, если настроить загрузку по HTTP.

RTSP вещание, настройка источника видео

VLC умеет принимать вещание по протоколу RTSP. Этот протокол используют камеры видеонаблюдения, и WTware можно настроить принимать картинку с камер. Или же можно настроить вещание видеопотока в сеть с Linux-машины и показывать одинаковое, синхронное видео на нескольких терминалах с WTware.

В качестве источника RTSP вещания нужна именно Linux машина, с Windows получается плохо. Возьмите любой свежий Linux. Live USB в виртуальной машине вполне подойдёт. Ниже будут скриншоты запуска вещания, снятые с Ubuntu Linux. На скриншотах входящий в дистрибутив Ubuntu VLC. Ничего сложного:







RTSP вещание, настройка терминала

Конфигурационный файл терминала, принимающего вещание RTSP:

application = vlc
vlc_cmdline = rtsp://10.1.1.32:8554/test

Вместо 10.1.1.32 надо указать IP машины с Linux, на которой запущено вещание. Так, как нарисовано на скриншотах выше. Порт 8554 и путь /test указаны на скриншотах. На экране терминала должно появиться видео. Можно запустить несколько терминалов с одинаковыми настройками, и все они будут покзывать одинаковое видео, которое вещается по RTSP с Linux машины.

Принимать вещание с камеры видеонаблюдения точно так же, порт и путь надо взять из настроек камеры.

Все параметры командной строки VLC

Проигрыватель VLC очень большая и сложная штука. У него десятки параметров. Полный архив со списками параметров, которые теоретически может принимать проигрыватель VLC через параметр WTware vlc_cmdline=. Их там очень много. Из полезных могу отметить уже упоминавшийся --loop и --udp-caching 500.

Конфигурационный файл VLM

Сложную настройку проигрывателя VLC удобнее выполнять через специальный конфигурационный файл VLM. Сначала самый простой пример, VLM для картинки. Записываем этот текст в файл test1.txt в каталоге VLC:

del all
new c1 broadcast enabled
setup c1 input "fake://" option "fake-file=/vlc_files/vlc.jpg"
setup c1 loop
control c1 play

В конфигурационном файле WTware пишем:

application = vlc
vlc_files = test1.txt, vlc.jpg
vlc_cmdline = --vlm-conf=/vlc_files/test1.txt

На экране должна получиться картинка с текстом "VLC for WTware test screen."

Мозаика. Четыре вещания на экране

Более сложный пример настройки проигрывателя VLC с помощью конфигурационного файла VLM. Сначала надо запустить вещание видео в сеть на машине с Linux так, как выше было нарисовано на скриншотах. Затем записываем текст в файл test2.txt в каталоге VLC, заменяя 10.1.1.32 на IP вашей машины с линуксом:

del all
new bg broadcast enabled
setup bg input "fake://" option "fake-file=/vlc_files/vlc.jpg"
setup bg option sub-filter=mosaic
setup bg output #bridge-in{offset=100}:display
setup bg option mosaic-width=640
setup bg option mosaic-height=480
setup bg option mosaic-xoffset=10
setup bg option mosaic-yoffset=10
setup bg option mosaic-keep-picture
new c1 broadcast enabled
setup c1 input "rtsp://10.1.1.32:8554/test"
setup c1 output #mosaic-bridge{id=c1,width=300,height=224}
setup c1 loop
new c2 broadcast enabled
setup c2 input "rtsp://10.1.1.32:8554/test"
setup c2 output #mosaic-bridge{id=c2,width=300,height=224}
setup c2 loop
new c3 broadcast enabled
setup c3 input "rtsp://10.1.1.32:8554/test"
setup c3 output #mosaic-bridge{id=c3,width=300,height=224}
setup c3 loop
new c4 broadcast enabled
setup c4 input "rtsp://10.1.1.32:8554/test"
setup c4 output #mosaic-bridge{id=c4,width=300,height=224}
setup c4 loop
control bg play
control c1 play
control c2 play
control c3 play
control c4 play

Конфигурационный файл WTware почти такой же, заменили только text1.txt на test2.txt:

application = vlc
vlc_files = test2.txt, vlc.jpg
vlc_cmdline = --vlm-conf=/vlc_files/test2.txt

Должна получиться такая картинка:


Четыре рыбы в четыре раза лучше одной рыбы! Можно указать разные источники видео, например с разных камер видеонаблюдения.

Обратите внимание: мозаика сначала накладывает картинки указанного в width= и height= размера на фоновую картинку, а затем растягивает фоновую картинку с видеопотоками на весь экран. Поэтому вместо нашей vlc.jpgстоит использовать фоновую картинку того же размера, что и разрешение экрана, и в mosaic-width и mosaic-height указывать тот же размер, иначе подбор размеров видео станет нетривиальным.

Промышленная эксплуатация

Пример конфигурационного файла для монитора 1920x1080 на девять камер видеонаблюдения с форума WTware:

del all
new bg broadcast enabled
setup bg input "fake://" option "fake-file=/vlc_files/sec.jpg"
setup bg option sub-filter=mosaic
setup bg output #bridge-in{offset=100}:display
setup bg option mosaic-height=1080
setup bg option mosaic-width=1920
setup bg option mosaic-rows=3
setup bg option mosaic-cols=3
setup bg option mosaic-order=c1,c2,c3,c4,c5,c6,c7,c8,c9
setup bg option mosaic-delay=0
setup bg option mosaic-keep-picture
new c1 broadcast enabled
setup c1 input "rtsp://admin:password@192.168.0.202:554/mpeg4/ch1/sub/av_stream" 
setup c1 output #mosaic-bridge{id=c1,width=640,height=360}
setup c1 loop
new c2 broadcast enabled
setup c2 input "rtsp://admin:password@192.168.0.203:554/mpeg4/ch1/sub/av_stream"
setup c2 output #mosaic-bridge{id=c2,width=640,height=360}
setup c2 loop
new c3 broadcast enabled
setup c3 input "rtsp://admin:password@192.168.0.209:554/mpeg4/ch1/sub/av_stream"
setup c3 output #mosaic-bridge{id=c3,width=640,height=360}
setup c3 loop
new c4 broadcast enabled
setup c4 input "rtsp://admin:password@192.168.0.208:554/mpeg4/ch1/sub/av_stream"
setup c4 output #mosaic-bridge{id=c4,width=640,height=360}
setup c4 loop
new c5 broadcast enabled
setup c5 input "rtsp://admin:password@192.168.0.225:554/mpeg4/ch1/sub/av_stream"
setup c5 output #mosaic-bridge{id=c5,width=640,height=360}
setup c5 loop
new c6 broadcast enabled
setup c6 input "rtsp://admin:password@192.168.0.217:554/mpeg4/ch1/sub/av_stream"
setup c6 output #mosaic-bridge{id=c6,width=640,height=360}
setup c6 loop
new c7 broadcast enabled
setup c7 input "rtsp://admin:password@192.168.0.229:554/mpeg4/ch1/sub/av_stream"
setup c7 output #mosaic-bridge{id=c7,width=640,height=360}
setup c7 loop
new c8 broadcast enabled
setup c8 input "rtsp://admin:password@192.168.0.226:554/mpeg4/ch1/sub/av_stream"
setup c8 output #mosaic-bridge{id=c8,width=640,height=360}
setup c8 loop
new c9 broadcast enabled
setup c9 input "rtsp://admin:password@192.168.0.210:554/mpeg4/ch1/sub/av_stream"
setup c9 output #mosaic-bridge{id=c9,width=640,height=360}
setup c9 loop
control bg play
control c1 play
control c2 play
control c3 play
control c4 play
control c5 play
control c6 play
control c7 play
control c8 play
control c9 play

WTware позволяет использовать VLC одновременно на двух мониторах, итого 18 камер. Получается так:


Таймаут отключения VLC

По умолчанию WTware включает проигрыватель VLC только после того, как пользователь переключится на соответствующий виртуальный экран. И выключает, когда пользователь переключается на другой экран. Это позволяет не загружать процессор и сеть воспроизведением видео, когда VLC работает в фоне. Но при сетевом вещании видео картинка полностью прорисовывается через несколько секунд после запуска VLC. Неудобно, если переключать экраны приходится часто. Такая строка в конфигурационном файле WTware:

vlc_timeout = 30

указывает терминалу не выключать VLC 30 секунд после того, как пользователь переключится на другой экран, на котором может работать RDP клиент. Это позволит, например, быстро сделать запись в базе и, переключившись обратно на видеонаблюдение, сразу без задержек видеть все камеры. Возможные значения - от 0 (значение по умолчанию) до 300 (5 минут работы VLC в фоновом режиме). Можно запретить терминалу отключать проигрыватель VLC:

vlc_timeout = off

Интерфейс VLC

Для тех, кто понимает. Такие строки в конфигурационном файле:

application = vlc
vlc_cmdline = -I qt4

запустят VLC с интерфейсом. Пользоваться им неудобно, зато можно зайти в настройки проигрывателя или посмотреть список установленных плагинов.



Появились комментарии, поправки к этой статье? Пожалуйста, напишите в форум!