Skip to content

Instantly share code, notes, and snippets.

@silageman
Last active November 16, 2015 23:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save silageman/229bb270cfacb567d360 to your computer and use it in GitHub Desktop.
Save silageman/229bb270cfacb567d360 to your computer and use it in GitHub Desktop.
Image sequence recorder linux (requires ffmpeg)
# -*- coding: utf-8 -*-
#Requires ffmpeg, audio not working at the moment: silageman
import gtk.gdk
import time
import os
print '\033[1;33m ________ _______ _____ \033[1;m'
print '\033[1;33m / ____/ | \__ \ / \ \033[1;m'
print '\033[1;33m< <_| | | // __ \| Y Y \ \033[1;m'
print '\033[1;33m \__ |____/(____ /__|_| / \033[1;m'
print '\033[1;33m |__| \/ \/ \033[1;m'
print '\033[1;33m |__| \/ \/ \033[1;m'
def main():
i = -1
speed = 0.015
restart = raw_input("Start Recording?: y/n ")
if restart == "no" or restart == "n":
exit(0)
if restart == "yes" or restart == "y":
print""
try:
while (True):
i += 1
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
time.sleep(speed)
print "FRAME %d OK!"%i
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
pb.save("image%04d.jpeg"%i,"jpeg")
except KeyboardInterrupt:
os.system("ffmpeg -framerate 15 -i image%04d.jpeg -codec copy output.mkv")%i
os.system("find . -type f -iname \*.jpeg -delete")
print '\033[1;44m#########################################################\033[1;m'
print '\033[1;44m##################### VIDEO READY #######################\033[1;m'
print '\033[1;44m#########################################################\033[1;m'
if __name__ == "__main__":
main()
@rkazak
Copy link

rkazak commented Jul 2, 2015

try...finally around this?

@GrahamDumpleton
Copy link

@noapex
Copy link

noapex commented Jul 2, 2015

Something like this:

import signal

def signal_handler(signal, frame):
    print('Exit!!!')
    sys.exit(0)

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    main()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment