2014-04-11 1 views
1

사람이 개입하지 않아도 GNU/Linux에서 전체 화면 연속 스크린 샷을 가장 빨리 얻을 수있는 방법을 찾으려고합니다. 지금까지 내가 얻을 :빠른 명령 줄 도구가있는 스크린 샷

$ time for i in {1..10}; do import -window root test-$i.png; done 
real 0m9.742s 
user 0m11.324s 
sys  0m0.584s 

$ time for i in {1..10}; do scrot test-$i.png; done 
real 0m1.686s 
user 0m1.528s 
sys  0m0.060s 

그러나, 나는 더 빨리 secret` 이상의 뭔가를하고 싶습니다. 시스템 시간은 적절한 (하드웨어 적으로) 데스크톱 PC (Ubuntu Linux 실행)에서 취해졌습니다. ImageMagick 빠른하지만 scrot 느린, 따라서

$ time for i in {1..10}; do import -window root test-$i.png; done 
real 0m7.591s 
user 0m6.096s 
sys  0m0.196s 

$ time for i in {1..10}; do scrot test-$i.png; done 
real 0m2.921s 
user 0m2.440s 
sys  0m0.120s 

: 재미있는 것은이 반환하는 KVM 시스템 (크런치 뱅 리눅스)를 호스트이다!?! 하드 디스크 I/O는 거의 동일한 타이밍을 얻기 때문에 속도에 영향을 미치지 않는 것 같습니다.

극적으로 (또는 덜 극적으로) 속도를 향상 시키려면 어떤 방법을 권하고 싶습니까?

감사합니다.

+1

[framebuffer directly] (http://stackoverflow.com/questions/1645181/taking-a-screen-shot-of-an-embedded-linux-framebuffer)를 사용해 보시겠습니까? –

+0

이것은 유망한 것처럼 보일 수 있습니다. 지금까지 나는 빈 터미널 (X가 아님)만을 잡았다 ... 나는 이것을 해결하자마자 질문/응답을 업데이트 할 것이다. 많은 감사합니다! – pidosaurus

답변

1

화면 이미지를 친숙한 PNG 또는 JPEG 형식으로 코드 변환하여 경험 한 시간의 영향을 받았을 가능성이있는 시간입니다. X의 xwd (X 덤프 디스플레이 유틸리티)을 사용하여 말 그대로 화면을 RAM에서 디스크로 덤프하십시오. 원시 XWD 파일을보고/처리 할 준비가되었을 때만 다른 형식으로 변환하십시오.

# Capture 
time for i in {1..10}; do xwd -root -silent -out test-$i.xwd; done 

# When ready to view 
mogrify -format PNG -path ./pngs test-*.xwd 

특정 창을 덤프하여 xwd 프로세스 속도를 향상시킬 수도 있습니다. 미리 계산할 수 있습니다.

+0

답변 해 주셔서 대단히 감사합니다. 'xwd'는'scrot'에 비해 실제로 더 빠르며 (~ 37 %),'real : 0m1.249s, user : 0m0.636s, sys : 0m0.252s'를 반환합니다. 미래를 염두에 두겠습니다. 그러나'png' 파일이 바로 필요합니다. 'mogrify'와 함께'xwd'를 사용하면 상당히 느립니다 : (실제 : 0m3.151s, 사용자 : 0m2.276s, sys : 0m0.360s). – pidosaurus

+1

맞아. 즉석 PNG가 필요한 경우 LLVM을 사용하여 libpng 및 최적화를 사용하여 자체 솔루션을 롤링하여 속도를 향상시킬 수 있습니다. 그러나 그것은 당신이 scrot로 경험하는 것의 5 ~ 10 %를 면도 할 것입니다. 거기 저수준 GPU 인코더의 예가 많이 있지만, 개발 시간은 0.2 초의 개선이 필요하지 않습니다. OpenMP가 Imagemagick과 함께 할 수있는 방법 일 수 있습니다. 모든 CPU 코어를 사용하려면 [이 답변] (http://stackoverflow.com/questions/17659916/imagemagick-only-uses-one-core/17755692#17755692)을 참조하십시오. – emcconville