У меня работает Linux-сервер, и я хотел бы транслировать первые четыре консоли (TTY1, TTY2, TTY3, TTY4), где у меня разные хвосты с моими файлами журнала, в сеть, чтобы я мог получать поток так, как я получаю веб-камера в моей сети.
Причина в том, что мое устройство NVR (Network Video Recorder) может разделить экран на 4 и отображать 4 файла журнала или даже 16 файлов журнала одновременно.
NVR поддерживает следующие протоколы: N1 и ONVIF.
Я нашел разные решения для потоковой передачи мультимедийного файла, но не для потоковой передачи консоли.
Честно говоря, я думаю, что вы слишком много работаете. Попробуйте посмотреть на что-нибудь вроде tmux
который может выполнять мультиплексирование консоли, а также разрешать множественные подключения к создаваемой консоли. Вы также можете разделить «экраны» на несколько консолей и переключаться между ними.
Это то, к чему можно легко повторно подключиться с любого количества консолей, к которым у вас есть доступ, а также отсоединиться от сеанса tmux без остановки каких-либо процессов.
Это создаст видео 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 -