def part3(vedio_path, output_path): """ 时间轴特效 :return: """ print("part3 拼接中---------") try: clip = VideoFileClip(vedio_path, audio=False) modifiedClip1 = clip.fl_time(lambda t: 1.5 * t, ) #倍速 modifiedClip2 = clip.fl_time(lambda t: 2 * t) modifiedClip3 = clip.fl_time(lambda t: 2.5 * t) final_clip = clips_array([ [clip, modifiedClip1], [modifiedClip2, modifiedClip3], ]) final_clip.duration = clip.duration final_clip.write_videofile(output_path) final_clip.close() except Exception: pass return output_path
#------------------------------------------------------------------------ # Transform into pairs of (origin_offset, destination_offset) #------------------------------------------------------------------------ brightnesses = dict([ ("%.2f" % (index / clip.fps), value[0]) for index, value in enumerate(brightnesses) ]) print "Found %f frames" % (clip.fps * clip.duration) #------------------------------------------------------------------------ # Filter function. # Need two cases, for video (scalar offsets) and audio (arrays). #------------------------------------------------------------------------ def remap_time(t): try: t0 = t[0] t1 = brightnesses["%.2f" % t0] t += (t1 - t0) except: try: t0 = t t1 = brightnesses["%.2f" % t0] t += (t1 - t0) except Exception, e: print "Exception when reordering: %s" % e sys.exit(1) return t #------------------------------------------------------------------------ # Process the clip. #------------------------------------------------------------------------ clip_sorted = clip.fl_time(remap_time, apply_to=['mask', 'audio'], keep_duration=True) clip_sorted.write_videofile(args.output, fps = clip.fps, write_logfile = True, audio_bufsize = int(44100.0 / clip.fps))
def video_preview(source, pipeline): clip = VideoFileClip(source) clip = clip.fl_time(lambda t: t + 39) output = clip.fl_image(pipeline) output.duration = 5 output.preview()