Esempio n. 1
0
    def produce(self, ip):
        def getframepath(frame, base=None):
            l1 = frame / 10000
            l2 = frame / 100
            path = "{0}/{1}/{2}.jpg".format(l1, l2, frame)
            if base is not None:
                path = "{0}/{1}".format(base, path)
            return path

        if self.prms_['op_dir'] is None:
            op_dir = os.path.dirname(ip)
        else:
            op_dir = self.prms_['op_dir']
        try:
            os.makedirs(op_dir)
        except:
            pass
        sequence = ffmpeg.extract(ip)
        try:
            for frame, image in enumerate(sequence):
                if frame % 100 == 0:
                    print("Decoding frames {0} to {1}".format(
                        frame, frame + 100))
                path = getframepath(frame, op_dir)
                try:
                    image.save(path)
                except IOError:
                    os.makedirs(os.path.dirname(path))
                    image.save(path)
        except:
            print "ffmpeg may not be installed"
            print "Aborted. Cleaning up..."
            shutil.rmtree(op_dir)
            raise
        yield op_dir
Esempio n. 2
0
	def produce(self, ip):
		def getframepath(frame, base = None):
			l1 = frame / 10000
			l2 = frame / 100
			path = "{0}/{1}/{2}.jpg".format(l1, l2, frame)
			if base is not None:
				path = "{0}/{1}".format(base, path)
			return path

		if self.prms_['op_dir'] is None:
			op_dir = os.path.dirname(ip)
		else:
			op_dir = self.prms_['op_dir']
		try:
			os.makedirs(op_dir)
		except:
			pass
		sequence = ffmpeg.extract(ip)
		try:
			for frame, image in enumerate(sequence):
				if frame % 100 == 0:
					print ("Decoding frames {0} to {1}"
						.format(frame, frame + 100))
				path = getframepath(frame, op_dir)
				try:
					image.save(path)
				except IOError:
					os.makedirs(os.path.dirname(path))
					image.save(path)
		except:
			print "ffmpeg may not be installed"
			print "Aborted. Cleaning up..."
			shutil.rmtree(op_dir)
			raise
		yield op_dir
Esempio n. 3
0
 def __init__(self, prms={}):
   """
   :param prms: directory of parameters in this case containing
                only a possible output dir e.g., 
                {'op_dir': '~/Desktop/'}
               if None, the input directory is used
   :return:
   """
   defPrms    = edict({'op_dir': None, 'vidName': None})
   prms       = cu.get_defaults(prms, defPrms, True)
   ch.ChainObjectIter.__init__(self, prms)
   assert self.prms_.vidName is not None
   ip         = self.prms_.vidName
   #Form the path is necessary
   if self.prms_['op_dir'] is None:
     op_dir = os.path.dirname(ip)
   else:
     op_dir = self.prms_['op_dir']
   try:
     os.makedirs(op_dir)
   except:
     pass
   sequence = ffmpeg.extract(ip)
   opNames  = []
   try:
     for frame, image in enumerate(sequence):
       if frame % 100 == 0:
           print ("Decoding frames {0} to {1}"
               .format(frame, frame + 100))
       path = getframepath(frame, op_dir)
       try:
           image.save(path)
       except IOError:
           os.makedirs(os.path.dirname(path))
           image.save(path)
       opNames.append(path)
   except:
     print "ffmpeg may not be installed"
     print "Aborted. Cleaning up..."
     shutil.rmtree(op_dir)
     raise
   self.iter_ = opNames