콘솔 프로그램에서 JPEG 이미지/이미지 스트림을 캡처하시겠습니까?

콘솔 프로그램에서 JPEG 이미지/이미지 스트림을 캡처하시겠습니까?

저는 헤드리스 Raspberry Pi를 실행 중이며 콘솔/터미널 출력을 단일 jpeg 또는 비디오 스트림으로 변환하고 싶습니다.

예: pbytop몇 초마다 출력을 캡처하고 mjpeg를 사용하여(또는 h264 스트림으로 ffmpeg를 통해) 웹사이트로 스트리밍합니다.

저는 jpeg/비디오 캡처 부분에 갇혀서 해당 미디어를 파이에서 웹사이트로 스트리밍하고 있습니다.

내가 얻은 가장 가까운 것은 다음과 같습니다.

  • SSH를 통해 파이로 접속
  • 시작tmux
  • pbytoptmux 내에서 시작
  • 두 번째 가상 터미널에서 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 파일일 뿐입니다.

tmux를 텍스트로 캡처하는 방법을 보여주는 예

"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

터미널 출력 및 최종 생성된 JPEG를 보여주는 스크린샷

여기에 이미지 설명을 입력하세요.

관련 정보