[python-win32] screen capture and win32gui.GetDesktopWindow()
RayS
rays at blue-cove.com
Thu Dec 7 07:01:10 CET 2006
At 05:02 PM 12/6/2006, Tim Roberts wrote:
>Ray Schumacher wrote:
> > I've been mulling screen capture code. I tried PIL's
> > ImageGrab().grab() (with pymedia) but find PIL's method to be pretty
> > slow, ~4grabs per second max with no other processes.
> > pymedia is pretty quick once I hand it the data.
>
>How large is your screen? A 1600x1200 true-color desktop is 8 megabytes
>worth of pixels, and it can take tens of milliseconds just to copy it
>over the PCI bus to main memory.
1024x768, and I want to immediately resize to 640x480 (or smaller)
before handing off to pymedia for MPEG input.
I have a PIL version that does ~3.2fps, and, the PIL method does not
capture the mouse...
Gabriel's suggestion of watching events for copying sub-areas is good...
I can track the mouse using pyHook, I think.
> > I putsed around with win32gui
> > desktop = win32gui.GetDesktopWindow()
> > dt_l, dt_t, dt_r, dt_b = win32gui.GetWindowRect(desktop)
> > but couldn't see how to get at the data via the handle.
> >
>
>You can use BitBlt to copy it to a DIB, but it's not going to be very
>convenient to work with.
I'll try it; all I want to do is downsample and send it off to
pymedia as a string:
vcodec.VFrame( PIX_FMT_RGB24, (640, 480), (s, None, None))
I had made a version of
http://pymedia.org/tut/src/make_video.py.html
>with PIL ImageGrab().grab() as the string source, profiled, and saw
>that it was the PIL method as 80+% of the time.
Thanks all,
Ray
More information about the Python-win32
mailing list