私はヘッドレスRaspberry Piを実行しており、コンソール/ターミナル出力を単一のjpegまたはビデオストリームに変換したいと思います。
例:pbytop
数秒ごとに出力をキャプチャし、mjpegを使用して(またはh264ストリームとしてffmpeg経由で)ウェブサイトにストリーミングします。
私はjpeg /ビデオキャプチャ部分に閉じ込められ、そのメディアをパイからウェブサイトにストリーミングしています。
私が得た最も近いものは次のとおりです。
- SSH経由でパイで接続
- スタート
tmux
pbytop
tmux内で起動- 2番目の仮想端末でpiとしてssh
- tmuxウィンドウをtxtファイルとしてキャプチャします。
-
tmux capture-pane -J -p -t %0 > /tmp/pane-plain-text.txt
-
tmux capture-pane -e -J -p -t %0 > /tmp/pane-with-colors.txt
- そうすることができ
cat /tmp/pane-with-colours.txt
、完璧に見えますが、まだ画像ではなく、複数の色のエスケープシーケンスを含むtxtファイルにすぎません。
「ascii to image」パスに従う前に、誰かが私に良い方向を教えてもらえますか?
/dev/fb0
合わせてストリームに抽出すると何かできるような感じffmpeg -f fbdev -i /dev/fb0 etc...
答え1
ASCIIを画像に変換するには、image Magickまたはxwdを使用して端末ウィンドウの内容をキャプチャします。
デスクトップでこれを行うか、仮想X11セッションで実行できます(Xvfbを使用)。
テキストステップをスキップするには、仮想X11でraw pbytopを実行し、そこから画像をキャプチャします。
xvfbと対話する必要がある場合は、xneeまたはxdotoolを使用して入力デバイスをシミュレートする必要があります。
画像の代わりにHTMLを使用できる場合は、a2hを使用してHTMLコンテンツを作成することも別の可能性です。
答え2
textimgツールは素晴らしいでしょう。しかし、一部の文字を正しく処理できません。。これが最も簡単なオプションになりますので、理解できることを願っています。
FWIW これが私が思いついた解決策です。tmux + python + imagemagick
SSHを介してRaspberry Piでtmuxを起動し、bpytop
「スクリーンショットを撮る」コマンドを実行します。
tmux new -dstelemetry 'bpytop'
次に、次のコマンドを使用してこのtmuxウィンドウのANSI出力をキャプチャします。
tmux capture-pane -e -J -p -t telemetry > bpytop.ansi
次に、ansiファイルをsvgに変換します。このPythonツール
cat bpytop.ansi | ansitoimg --wide bpytop.svg
次にsvgを画像に変換します(スペースを削除するために少し切り取ります)。
convert bpytop.svg -crop 976x582+9+43 bpytop.jpg