
У меня запущен сервер Linux, и я хотел бы транслировать первые четыре консоли (TTY1, TTY2, TTY3, TTY4), где у меня есть разные хвосты с моими файлами журналов, в сеть, чтобы я мог получать поток так же, как я получаю его с веб-камеры в своей сети.
Причина в том, что мой NVR (сетевой видеорегистратор) может разделить экран на 4 части и отображать 4 или даже 16 файлов журнала одновременно.
NVR поддерживает следующие протоколы: N1 и ONVIF.
Я нашел разные решения для потоковой передачи медиафайлов, но не нашел ни одного для потоковой передачи с консоли.
решение1
Это создаст видео TTY1 и передаст его в ffplay (вы можете сделать с ним что-нибудь еще)
#!/bin/bash
(while sleep 1
do
screendump 1 | anytopnm | pnmtojpeg
done) | ffmpeg -f image2pipe -r 1 -c:v mjpeg -i - -c:v copy -f matroska - | ffplay -
Вы также можете проверить, когда изменяется LOGFILE. Каждый раз, когда это происходит, он получает последние 25 файлов, преобразует их в изображение и передает его в ffmpeg
, который создает видеофайл matroska и записывает его в stdout
, где ffplay
подбирает его и воспроизводит.
Я оставил все каналы, чтобы вы могли решить, куда вставить уже имеющиеся у вас решения для медиафайлов.
#!/bin/bash
LOGFILE=/tmp/filename
(while inotifywait -q -e modify $LOGFILE >/dev/null; do
tail -25 $LOGFILE | anytopnm | pnmtojpeg
done) | ffmpeg -f image2pipe -r 1/8 -c:v mjpeg -i - -c:v copy -f matroska - | ffplay -
решение2
Честно говоря, я думаю, что вы слишком усердно работаете. Попробуйте посмотреть на что-то вроде того, tmux
что может мультиплексировать консоли, а также разрешать множественные подключения к создаваемой им консоли. Вы также можете разделить "экраны" на несколько консолей и переключаться между ними.
К этому можно легко подключиться повторно с любого количества консолей, к которым у вас есть доступ, а также отключиться от сеанса tmux, не завершая никаких процессов.