
Ich habe einen Linux-Server am Laufen und möchte die ersten vier Konsolen (TTY1, TTY2, TTY3, TTY4), auf denen ich unterschiedliche Enden habe, mit meinen Protokolldateien ins Netzwerk streamen, sodass ich den Stream so empfangen kann, wie ich eine Webcam in meinem Netzwerk empfange.
Der Grund dafür ist, dass mein NVR-Gerät (Network Video Recorder) den Bildschirm in 4 Teile aufteilen und 4 oder sogar 16 Protokolldateien gleichzeitig anzeigen kann.
Der NVR unterstützt die folgenden Protokolle: N1 und ONVIF
Ich habe verschiedene Lösungen zum Streamen einer Mediendatei gefunden, aber keine zum Streamen der Konsole.
Antwort1
Dadurch wird ein Video von TTY1 erstellt und an ffplay weitergeleitet (Sie können damit auch etwas anderes machen).
#!/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 -
Sie können auch prüfen, wann sich LOGFILE ändert. Jedes Mal, wenn das passiert, werden die letzten 25 Dateien abgerufen, in ein Bild konvertiert und an weitergeleitet ffmpeg
, das eine Matroska-Videodatei erstellt und an schreibt stdout
, wo ffplay
es abgeholt und abgespielt wird.
Ich habe alle Pipes gelassen, damit Sie entscheiden können, wo Sie die Lösungen einfügen, die Sie bereits für Mediendateien haben.
#!/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 -
Antwort2
Ehrlich gesagt glaube ich, dass Sie sich zu viel Mühe geben. Versuchen Sie, sich etwas anzusehen, tmux
das Konsolenmultiplexing ermöglicht und mehrere Verbindungen zu der erstellten Konsole zulässt. Sie können die „Bildschirme“ auch auf mehrere Konsolen aufteilen und zwischen ihnen wechseln.
Die erneute Verbindung kann von so vielen Konsolen aus, auf die Sie Zugriff haben, problemlos hergestellt werden. Auch die Trennung von der Tmux-Sitzung ist problemlos möglich, ohne dass dabei Prozesse beendet werden müssen.