我正在运行一个 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 -