コンソールをネットワークにストリーミングする方法

コンソールをネットワークにストリーミングする方法

Linux サーバーを実行しており、ログ ファイルが異なるテールを持つ最初の 4 つのコンソール (TTY1、TTY2、TTY3、TTY4) をネットワークにストリーミングして、ネットワークで Web カメラを受信するのと同じ方法でストリームを受信できるようにしたいと考えています。

その理由は、私の 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の例

これは、プロセスを強制終了することなく、アクセスできる任意の数のコンソールから簡単に再接続したり、tmux セッションから切断したりできるものです。

関連情報