
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 -