저는 헤드리스 Raspberry Pi를 실행 중이며 콘솔/터미널 출력을 단일 jpeg 또는 비디오 스트림으로 변환하고 싶습니다.
예: pbytop
몇 초마다 출력을 캡처하고 mjpeg를 사용하여(또는 h264 스트림으로 ffmpeg를 통해) 웹사이트로 스트리밍합니다.
저는 jpeg/비디오 캡처 부분에 갇혀서 해당 미디어를 파이에서 웹사이트로 스트리밍하고 있습니다.
내가 얻은 가장 가까운 것은 다음과 같습니다.
- SSH를 통해 파이로 접속
- 시작
tmux
pbytop
tmux 내에서 시작- 두 번째 가상 터미널에서 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에서 원시 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로 변환하십시오.이 파이썬 도구
cat bpytop.ansi | ansitoimg --wide bpytop.svg
그런 다음 svg를 이미지로 변환합니다(공백을 제거하기 위해 약간 자르기).
convert bpytop.svg -crop 976x582+9+43 bpytop.jpg