This is a quick change to what I did a while ago, using ffmpeg to extract the frame and PIL to create a complete thumb image.
import os, sys from PIL import Image # Use "ffmpeg -i <videofile>" to get total length by parsing the error message chout, chin, cherr = os.popen3("ffmpeg -i %s" % sys.argv[1]) out = cherr.read() dp = out.index("Duration: ") duration = out[dp+10:dp+out[dp:].index(",")] hh, mm, ss = map(float, duration.split(":")) total = (hh*60 + mm)*60 + ss # Use "ffmpeg -i <videofile> -ss <start> frame<nn>.png" to extract 9 frames for i in xrange(9): t = (i + 1) * total / 10 os.system("ffmpeg -i %s -ss %0.3fs frame%i.png" % (sys.argv[1], t, i)) # Make a full 3x3 image by pasting the snapshots full = None for y in xrange(3): for x in xrange(3): img = Image.open("frame%i.png" % (y*3+x)) w, h = img.size if full is None: full = Image.new("RGB", (w*3, h*3)) full.paste(img, (x*w, y*h)) # Save result full.save("thumbs.png")
6502
source share