2009-08-31 10 views
15
  • Czy są jakieś biblioteki, których można użyć do zapisu zrzutów ekranu w Pythonie.
  • Czy można to zrobić na różnych platformach?
  • Czy można przechwycić wideo? A jeśli to możliwe w czasie rzeczywistym?
  • A może będzie możliwe bezpośrednie wygenerowanie filmów Flash w postaci ?

Odpowiedz

2

Nie znam żadnych bibliotek ogólnego przeznaczenia. Zrobiłem to dla Windows i użyłem jakiegoś kodu codeproject.com w bibliotece DLL, wywoływanej z ctypes.

Przechwytywanie wideo jest prawdopodobnie trudniejsze; Zrobiłem bardzo szybki zrzut ekranu przy użyciu trywialnego sposobu kodowania i otrzymałem może 8 klatek na sekundę. Jeśli to nie wystarczy, prawdopodobnie będziesz potrzebować biblioteki zoptymalizowanej pod kątem użycia; na przykład tightVNC lub CamStudio czy coś. CamStudio może eksportować flash i jest OSS.

3

przechwytywania ekranu można zrobić z PIL thanks to the ImageGrab module

Do generowania animacji Flash, można rzucić okiem na ming. Nie jestem pewien, czy ma taką możliwość, ale warto się jej przyjrzeć.

+5

PIL jest świetna, ale niestety moduł ImageGrab można używać tylko w systemie Windows, w zależności od ich dokumentów. –

1

Jednym ze sposobów przechwytywania wideo na ekranie użytkownika (na pewno dla X11, nie wiesz o Windowsie) jest użycie gstreamer z ximagesrc plugin. Dostępne są powiązania w języku Python: here, chociaż wcześniej nie używałem gst-python. Wiem, że Istanbul, aplikacja do screencastingu open source, używa jej - przeglądanie jej źródła może ci pomóc.

Do przechwytywania obrazów statycznych użyłem PyGTK przed Linuksem do przechwytywania ekranu użytkownika. Powinno to również działać na Windowsie i Macu, chociaż tego nie próbowałem. Oto mały fragment:

import gtk 
win = gtk.gdk.get_root_window() 
width, height = win.get_size() 
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height) 
pb = pb.get_from_drawable(window, window.get_colormap(), 0, 0, 0, 0, width, height) 
pb.save('path to file', 'png') 

See the GTK docs, aby uzyskać więcej informacji.

Nadzieję, że pomaga!

3

możesz spróbować tego również może być to URL może ci pomóc.

jego castro !!! zobacz przykładowy kod poniżej może być przydatny ...

>>> from castro import Castro 
>>> c = Castro() 
>>> c.start() 
>>> # Do something awesome! 
>>> c.stop() 
2

Napisałem narzędzie do przechwytywania wielu platform w wxPythonie. Zobacz pobieranie "GeneralScreenShotWX.py" w podtemat "Elastyczna aplikacja do przechwytywania ekranu" w temacie "WorkingWithImages" @http://wiki.wxpython.org/WorkingWithImages#A_Flexible_Screen_Capture_App.

Działa na MSW, OS X i jednej dystrybucji Linuksa i nie wymaga żadnych dodatkowych pakietów wxPython.

Powiązane problemy