def start_recording(self): log.info("Screencast recorder starting for session {}".format( self.filename_prefix)) sys.stderr = sys.stdout = open( os.sep.join([self.dir_path, 'vnc_video.log']), 'w') self.__filepath = os.sep.join( [self.dir_path, str(self.filename_prefix) + '.flv']) kwargs = { 'framerate': self.SCREENCAST_FRAMERATE, 'clipping': video.str2clip("{}x{}+0-0".format(self.SCREENCAST_WIDTH, self.SCREENCAST_HEIGHT)), 'debug': 1 } self.recorder = multiprocessing.Process( target=self._flvrec, args=(self.__filepath, self.host, self.port), kwargs=kwargs, name="{}.recorder".format(__name__)) self.recorder.daemon = True self.recorder.start() log.info("Started screencast recording(pid:{}) for {}:{} to {}".format( self.recorder.pid, self.host, self.port, self.dir_path))
def main(argv): import getopt, vnc2flv def usage(): print argv[0], vnc2flv.__version__ print ('usage: %s [-d] [-q] [-o filename] [-r framerate] [-K keyframe]' ' [-e vnc_encoding] [-P vnc_pwdfile] [-N]' ' [-B blocksize] [-C clipping] [-S subprocess] [-t time-per-piece]' ' [host[:display] [port]]' % argv[0]) return 100 try: (opts, args) = getopt.getopt(argv[1:], 'dqo:r:K:t:e:P:NB:C:S:') except getopt.GetoptError: return usage() debug = 0 verbose = 1 filename = 'out%s.flv' % time.strftime('%Y%m%d%H%M') framerate = 12 keyframe = 120 preferred_encoding = (0,) pwdfile = None cursor = True blocksize = 32 clipping = None cmdline = None time_per_piece = None (host, port) = ('localhost', 5900) for (k, v) in opts: if k == '-d': debug += 1 elif k == '-q': verbose -= 1 elif k == '-o': filename = v elif k == '-r': framerate = int(v) elif k == '-K': keyframe = int(v) elif k == '-e': preferred_encoding = tuple( int(i) for i in v.split(',') ) elif k == '-P': pwdfile = v elif k == '-N': cursor = False elif k == '-B': blocksize = int(v) elif k == '-C': clipping = str2clip(v) elif k == '-S': cmdline = v elif k == '-t': if v.endswith('m'): time_per_piece = int(v[:-1]) else: raise Exception('Only understand values like 5m at present') if not cursor: preferred_encoding += (-232,-239,) if 1 <= len(args): if ':' in args[0]: i = args[0].index(':') host = args[0][:i] or 'localhost' port = int(args[0][i+1:])+5900 else: host = args[0] if 2 <= len(args): port = int(args[1]) return flvrec(filename, host, port, framerate=framerate, keyframe=keyframe, preferred_encoding=preferred_encoding, pwdfile=pwdfile, blocksize=blocksize, clipping=clipping, cmdline=cmdline, debug=debug, verbose=verbose, time_per_piece=time_per_piece)
def main(argv): import getopt, vnc2flv def usage(): print argv[0], vnc2flv.__version__ print( 'usage: %s [-d] [-f] [-r framerate] [-K keyframe]' ' [-B blocksize] [-C clipping] [-W panwindow] [-S panspeed]' ' src1.flv src2.flv ... dest.flv' % argv[0]) return 100 try: (opts, args) = getopt.getopt(argv[1:], 'dfr:K:B:C:W:S:') except getopt.GetoptError: return usage() debug = 0 force = False framerate = 12 keyframe = 120 blocksize = 32 clipping = None panwindow = None panspeed = 15 for (k, v) in opts: if k == '-d': debug += 1 elif k == '-f': force = True elif k == '-r': framerate = int(v) elif k == '-K': keyframe = int(v) elif k == '-B': blocksize = int(v) elif k == '-C': clipping = str2clip(v) elif k == '-W': panwindow = str2size(v) elif k == '-S': panspeed = int(v) if len(args) < 2: return usage() outfile = args.pop(-1) srcfiles = args try: flvcat(outfile, srcfiles, framerate=framerate, keyframe=keyframe, blocksize=blocksize, clipping=clipping, panwindow=panwindow, panspeed=panspeed, force=force, debug=debug) except IOError, e: print >> sys.stderr, e
def start_recording(self, framerate=5, size=(800, 600)): sys.stderr = sys.stdout = open( os.sep.join([self.dir_path, 'vnc_video.log']), 'w') self.__filepath = os.sep.join( [self.dir_path, str(self.filename_prefix) + '.flv']) kwargs = { 'framerate': framerate, 'clipping': video.str2clip("%sx%s+0-0" % (size[0], size[1])), 'debug': 1, 'verbose': 1 } self.recorder = multiprocessing.Process(target=self._flvrec, args=(self.__filepath, self.host, self.port), kwargs=kwargs) self.recorder.start()
def start_recording(self, framerate=5, size=(800, 600)): sys.stderr = sys.stdout = open( os.sep.join([self.dir_path, 'vnc_video.log']), 'w') self.__filepath = os.sep.join( [self.dir_path, str(self.filename_prefix) + '.flv']) kwargs = { 'framerate': framerate, 'clipping': video.str2clip("%sx%s+0-0" % (size[0], size[1])), 'debug': 1 } self.recorder = multiprocessing.Process(target=self._flvrec, args=(self.__filepath, self.host, self.port), kwargs=kwargs) self.recorder.daemon = True self.recorder.start() log.info("Started screencast recording(pid:{}) for {}:{} to {}".format( self.recorder.pid, self.host, self.port, self.dir_path))
def main(argv): import getopt, vnc2flv def usage(): print argv[0], vnc2flv.__version__ print ('usage: %s [-d] [-f] [-r framerate] [-K keyframe]' ' [-B blocksize] [-C clipping] [-W panwindow] [-S panspeed]' ' src1.flv src2.flv ... dest.flv' % argv[0]) return 100 try: (opts, args) = getopt.getopt(argv[1:], 'dfr:K:B:C:W:S:') except getopt.GetoptError: return usage() debug = 0 force = False framerate = 12 keyframe = 120 blocksize = 32 clipping = None panwindow = None panspeed = 15 for (k, v) in opts: if k == '-d': debug += 1 elif k == '-f': force = True elif k == '-r': framerate = int(v) elif k == '-K': keyframe = int(v) elif k == '-B': blocksize = int(v) elif k == '-C': clipping = str2clip(v) elif k == '-W': panwindow = str2size(v) elif k == '-S': panspeed = int(v) if len(args) < 2: return usage() outfile = args.pop(-1) srcfiles = args try: flvcat(outfile, srcfiles, framerate=framerate, keyframe=keyframe, blocksize=blocksize, clipping=clipping, panwindow=panwindow, panspeed=panspeed, force=force, debug=debug) except IOError, e: print >>sys.stderr, e
def main(argv): import getopt, vnc2flv def usage(): print(argv[0], vnc2flv.__version__) print('usage: %s [-d] [-q] [-o filename] [-r framerate] [-K keyframe]' ' [-e vnc_encoding] [-P vnc_pwdfile] [-N]' ' [-B blocksize] [-C clipping] [-S subprocess]' ' [host[:display] [port]]' % argv[0]) return 100 try: (opts, args) = getopt.getopt(argv[1:], 'dqo:r:K:t:e:P:NB:C:S:') except getopt.GetoptError: return usage() debug = 0 verbose = 1 filename = 'out%s.flv' % time.strftime('%Y%m%d%H%M') framerate = 12 keyframe = 120 preferred_encoding = (0, ) pwdfile = None cursor = True blocksize = 32 clipping = None cmdline = None (host, port) = ('localhost', 5900) for (k, v) in opts: if k == '-d': debug += 1 elif k == '-q': verbose -= 1 elif k == '-o': filename = v elif k == '-r': framerate = int(v) elif k == '-K': keyframe = int(v) elif k == '-e': preferred_encoding = tuple(int(i) for i in v.split(',')) elif k == '-P': pwdfile = v elif k == '-N': cursor = False elif k == '-B': blocksize = int(v) elif k == '-C': clipping = str2clip(v) elif k == '-S': cmdline = v if not cursor: preferred_encoding += ( -232, -239, ) if 1 <= len(args): if ':' in args[0]: i = args[0].index(':') host = args[0][:i] or 'localhost' port = int(args[0][i + 1:]) + 5900 else: host = args[0] if 2 <= len(args): port = int(args[1]) return flvrec(filename, host, port, framerate=framerate, keyframe=keyframe, preferred_encoding=preferred_encoding, pwdfile=pwdfile, blocksize=blocksize, clipping=clipping, cmdline=cmdline, debug=debug, verbose=verbose)
def main(argv): import getopt, vnc2flv def usage(): print argv[0], vnc2flv.__version__ print ('usage: %s [-d] [-q] [-o filename] [-r framerate] [-K keyframe]' ' [-e vnc_encoding] [-P vnc_pwdfile] [-N]' ' [-B blocksize] [-C clipping] [-S subprocess] [-R retry_max_times]' ' [host[:display] [port]]' % argv[0]) return 100 try: (opts, args) = getopt.getopt(argv[1:], 'dqo:r:K:t:e:P:NB:C:S:R:') except getopt.GetoptError: return usage() debug = 0 verbose = 1 filename = 'out%s.flv' % time.strftime('%Y%m%d%H%M') framerate = 12 keyframe = 120 preferred_encoding = (0,) pwdfile = None cursor = True blocksize = 32 clipping = None cmdline = None retry_cnt = 1 (host, port) = ('localhost', 5900) for (k, v) in opts: if k == '-d': debug += 1 elif k == '-q': verbose -= 1 elif k == '-o': filename = v elif k == '-r': framerate = int(v) elif k == '-K': keyframe = int(v) elif k == '-e': preferred_encoding = tuple( int(i) for i in v.split(',') ) elif k == '-P': pwdfile = v elif k == '-N': cursor = False elif k == '-B': blocksize = int(v) elif k == '-C': clipping = str2clip(v) elif k == '-S': cmdline = v elif k == '-R': retry_cnt = int(v) if not cursor: preferred_encoding += (-232,-239,) if 1 <= len(args): if ':' in args[0]: i = args[0].index(':') host = args[0][:i] or 'localhost' port = int(args[0][i+1:])+5900 else: host = args[0] if 2 <= len(args): port = int(args[1]) # Doing retry when errors: Socket error(power cycle) or RFB error(also may caused by target power cycle , which causes VNC disconnected for a while.) interval=15 # sec between each retry arr=filename.split('.flv') base_fname=arr[0] if len(arr) <= 1 : print 'Error: the filename should be in format of xxxx.flv' return 4; i =1 while i <= retry_cnt: if i > 1: filename="%s_%d.flv" %( base_fname, i ) # save as a new file name ret = flvrec(filename, host, port, framerate=framerate, keyframe=keyframe, preferred_encoding=preferred_encoding, pwdfile=pwdfile, blocksize=blocksize, clipping=clipping, cmdline=cmdline, debug=debug, verbose=verbose) i = i + 1 if retry_cnt == 1 or ret == 0: return ret; else: print ('[Warning]: VNC disconnected. ret code is %d ')%( ret ) print ('[Warning]: Retry recording after %d sec, retry counter = %d, total retry is %d ')%( interval, i, retry_cnt ) time.sleep(interval) return 3; # exceed retry, too many RFB errors