예제 #1
0
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
예제 #2
0
    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()
예제 #3
0
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)))
예제 #4
0
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
예제 #5
0
 def __init__(self, in_fname):
     self.in_fname = in_fname
     self.out_fname = ut.make_temp('.wav')
     os.remove(self.out_fname)
예제 #6
0
def save_tmp(im, encoding = '.png', dir = None):
  fname = ut.make_temp(encoding, dir = dir)
  save(fname, im)
  return fname
예제 #7
0
def show_html(html):
  page = ut.make_temp('.html')
  ut.make_file(page, html)
  #print 'opening', page
  webbrowser.open(page)