Как заставить телеки работать?
Варианта два. 
Или гнать с сервака поток видео, как тв... и принимать на телеках встроенным плеером 
Или растягивать hdmi до «сервера» и гнать напрямую с видеокарты. 
Плюс - нужен планировщик трансляции. Чтоб по рассписанию, с рекламными вставкими, переходами... 

Тут я знаю два варианта. Из бесплатных. 
Liquidsoap (используем для автоматизации музыки, нам для ТВ не подошел, но умеет)
И вариант который используем для тв - xibo - https://xibo.org.uk/

В любом случае - это не так просто как Вам кажется

Еали hdmi тянуть далеко и не вариант - то по неттопу к каждому тв. Мы так делаем. Все на linux   И сервер и плеер у тв

Писал с тел. Дополню ответ.
Конфиг liquidsoap (он не всегда очевиден)
spoiler
set("log.stdout", true)  # вывод в консоль 
set("log.level", 3)  # уровень логгирования - 3
set("log.file.path","radio1.log")  # дополнительно вывод в файл
set("video.converter.preferred", "native") #выбор кодировщика, можно внешний(ffmpeg)
set("frame.video.width",1920)
set("frame.video.height",1080)
#set("frame.video.samplerate",25)

#плейлисты - что откуда брать (папки,или файл,или плейлист)
# тут - плейлист - это папка
day = (playlist(mode="randomize", "/home/vvideo/radio/day"))
night = (playlist(mode="randomize", "/home/vvideo/radio/night"))
reklama = (playlist(mode="randomize", "/home/vvideo/radio/reklama"))

#поведение плейлистов, что за чем играет итд тут - 1 файл рекламы, на 2 файла из плейлиста музыки
day = random(weights=[1,2],[reklama,day])
night = random(weights=[1,2],[reklama,night])

# в какое время играет....
music = mksafe(switch(track_sensitive = true, [({00h00m00s-18h00m00s},day),({18h00m00s-00h00m00s},night)]))
#создаем второй поток, накладываем логотип
music2 = single("/home/vvideo/radio/logo.mp4")
music2 = single("/home/vvideo/radio/video/1.mp4")
# куда и как накладываем лого...
music2 = video.scale(scale=0.3,x=1,y=1,music2)
#смешиваем потоки в один
music = add([music,music2])

#куда выводим - сеть, кодировщик, плеер....
output.external(%avi,"cvlc fd://0", music)
#или вывод в окно openGL
output.external(%avi,"ffmpeg -re -i pipe:0 -map 0:v -f opengl 'test' -map 0:a -f pulse default", music)
#или вывод в rtsp
#output.external(%avi,"cvlc -I dummy --vout vdummy --aout adummy fd://0 --sout='#transcode{vcodec=x264,vb=4096,acodec=mp4a}:rtp{name=dst=0.0.0.0,port=5080,sdp=rtsp://:1935/live.sdp}'", music)


Проблема - основная - может юзать только 1 ядро ЦП!!!!!!!!!
liquidsoap делает видео несжатым,чтоб можно было юзать всякие наложения, преходы итд...
и как следствие нагрузка на ЦП, т.к. кодирование. у нас нормально взлетел только на проце i3... что не устроило
Синхр - ставим на неттопы rclone, синхронизация по крон тех папок, которые указаны в конфиге.
Днем - синхр папки "ночь", ночью - "день".
в итоге - все играет по порядку, и нету перебоев. Liquidsoap при начале игры "папки" создает из нее плейлист, потом не очень удобно его менять,  впроцессе, хотя он это и умеет.

Xibo - софт для организации видеорекламы,стен, и прочего...
Поднялся с полпинка, жрет меньше, позволяет делать любые планирования конфигов, наложение итд....
можно отдать веб интерфейс специально обученному человеку(видеоредактор,рекламщик), и он спокойно там разберется(ну или не очень спокойно))
можно планировать все на перед, синхр уже встроенна в CMC и клиент.... 
нам на много ТВ - как раз зашло... ну и всякие деления по группам, разные плейлисты для груп и прочеее, там куча всего
Мы остановились на таких ПК - видео фуллхд с битрейтом до 8-9к... + наложение логотипа(видеофайл)
+ всякие вставки бегущей строки,погоды,прочеее. нагрузка - не более 80%
https://ark.intel.com/content/www/ru/ru/ark/produc...
Нужны телевизоры с удаленным управлением + платформа генерации контента. Первое умеют любые smarttv (у всех есть api, нужно накидать небольшой скрипт), второе зависит от выбора входного сигнала, обычно берут стандартный компьютер и генерят udp-поток, а в телевизоры заливают плейлист или настраивают каналы iptv. Есть и платные решения, просто загуглите система управления телевизорами в гостинице.