def make_temp_animated_gif_cmdline(seq, duration=0.5, dir=None, tmp_ext='.ppm', seq_fname=None): if seq_fname is None: seq_fname = ut.make_temp('.gif', dir=dir) # avoid ffmpeg prompt os.system('rm %s' % seq_fname) base = ut.make_temp('') #fnames = ['%s_%d.jpg' % (base, i) for i in xrange(len(seq))] fnames = ['%s_%04d%s' % (base, i, tmp_ext) for i in xrange(len(seq))] # for fname, x in zip(fnames, seq): # ig.save(fname, x) # def f((fname, x)): # ig.save(fname, x) ut.parmap(save_helper, zip(fnames, seq)) ut.prn_sys('convert -layers OptimizePlus -delay %f -loop 0 %s_*%s %s' % (duration, base, tmp_ext, seq_fname)) #fps = 1./duration # ut.prn_sys('ffmpeg -r %f -i %s_%%d.jpg %s.avi' % (fps, base, base)) # ut.prn_sys('ffmpeg -i %s.avi -pix_fmt rgb24 %s' % (base, seq_fname)) return seq_fname
def make_html(self, out_dir, ext='.mp4'): if self.video_url is None: if self.video_fname is None: fname = ut.make_temp(ext, dir=out_dir) os.remove(fname) make_video(fname, self.ims, self.fps, sound=self.sound) else: fname = ut.make_temp(ext, dir=out_dir) os.remove(fname) if self.copy_method == 'copy': os.system('cp "%s" %s' % (self.video_fname, fname)) elif self.copy_method == 'symlink': os.system('ln -s "%s" %s' % (self.video_fname, fname)) else: raise RuntimeError() rel_fname = fname.split('/')[-1] else: rel_fname = self.video_url vid_id = str(random.random()) return """ <table> <tr> <td> <video controls id = "%(vid_id)s" onplay = "vid_focus = null;" onpause = "vid_focus = document.getElementById('%(vid_id)s');" onloadedmetadata = "var t = getParameterByName('videoStart'); if (t != null) { this.currentTime = t; } if (getParameterByName('videoAutoplay')) { this.play(); }"> <source src = "%(rel_fname)s" type = "video/mp4" preload = "none"> </video> </td> <td> Speed: <input type = "text" size = "5" value = "1" oninput = "document.getElementById('%(vid_id)s').playbackRate = parseFloat(event.target.value);"> </td> </tr> </table> """ % locals()
def path_from_im(x, output_dir, img_encoding='.png'): if type(x) == type((1, )) and (x[0] in ('img', 'img_mv')): x = list(x) mv_im = (x[0] == 'img_mv') if type(x[1]) == type(''): x[1] = os.path.abspath(x[1]) im = x[1] elif type(x) == type((1, )) and (x[0] in ('img-png', )): assert type(x[1]) == type('') path = ut.make_temp('.png', dir=output_dir) f = open(path, 'wb') f.write(x[1]) f.close() mv_im = False im = os.path.split(path)[1] else: mv_im = False im = x if type(im) == type(''): if mv_im: new_path = ut.make_temp(os.path.splitext(im)[1], dir=output_dir) #new_path = ut.make_temp(img_encoding, dir = output_dir) #os.rename(im, new_path) ut.sys_check_silent('mv', im, new_path) return os.path.split(new_path)[1] else: return im elif type(im) == type(np.array([])): path = ut.make_temp(img_encoding, dir=output_dir) ig.save(path, im) # use relative path in webpage so the directory can be moved return os.path.split(path)[1] else: ut.fail("Don't know how to handle image type: %s" % str(type(im)))
def play(samples_or_snd, sr=None, compress=True): if sr is None: samples = samples_or_snd.samples sr = samples_or_snd.rate else: samples = samples_or_snd snd = Sound(None, sr, samples) #.unnormalized('int16') path = ut.pjoin(aolib_imtable.get_www_path(), 'sounds') if compress: with ut.temp_file('.wav') as wav_fname: fname = ut.make_temp('.mp3', dir=path) #scipy.io.wavfile.write(wav_fname, snd.rate, snd.samples) snd.save(wav_fname) os.system('ffmpeg -loglevel error -y -i "%s" "%s"' % (wav_fname, fname)) else: fname = ut.make_temp('.wav', dir=path) scipy.io.wavfile.write(fname, snd.rate, snd.samples) os.system('chmod a+rwx %s' % fname) #url = ut.pjoin(imtable.PUBLIC_URL, 'sounds', os.path.split(fname)[1]) url = ut.pjoin(aolib_imtable.get_url(), 'sounds', os.path.split(fname)[1]) #print url return url
def __init__(self, in_fname): self.in_fname = in_fname self.out_fname = ut.make_temp('.wav') os.remove(self.out_fname)
def save_tmp(im, encoding = '.png', dir = None): fname = ut.make_temp(encoding, dir = dir) save(fname, im) return fname
def show_html(html): page = ut.make_temp('.html') ut.make_file(page, html) #print 'opening', page webbrowser.open(page)