Варианта два.
Или гнать с сервака поток видео, как тв... и принимать на телеках встроенным плеером
Или растягивать 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...