Created
December 16, 2016 14:32
-
-
Save zachwhalen/e9daab3eab7dbd0f918113089108512c to your computer and use it in GitHub Desktop.
A quick and clunky way to make one of those videos where it speeds up every time something happens. Uses MoviePy.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/usr/bin/python | |
# use this script to make one of those videos where it speeds up | |
# every time something happens | |
# this has only been tested on a Mac with Python 2.7 | |
# Also, moviepy is picky about codecs. What I have here seems to work | |
# (libxvid) but you may need to try something else | |
# Your mileage may vary | |
import re | |
import os | |
import glob | |
from moviepy.editor import * | |
# wherever you're working | |
basepath = "./Videos/friday/" | |
# initial speed | |
speed = 1 | |
# what to change | |
# positive gets faster, negative gets slower | |
factor = .1 # .1 == 10% faster | |
# get all of the clip points | |
# I did this manually for Friday, but you could also use a transcription file | |
marks = ['00:00:00','00:00:45.0','00:00:46.0','00:00:48.5','00:00:53.5','00:00:54.3','00:00:57.0','00:01:38.8 ','00:01:39.8','00:01:42','00:01:47.1','00:01:48.2','00:01:50.6','00:02:10.5','00:02:11.5','00:02:45.5','00:02:49.8','00:02:50.6','00:02:52.5','00:02:58','00:02:59','00:03:02','00:03:15','00:03:16','00:03:19','00:03:23','00:03:24','00:03:27','00:03:42'] | |
# make a temporary folder | |
if not os.path.exists(basepath+"tmp"): | |
os.makedirs(basepath+"tmp") | |
# cut it up and speed up the chunks proportionally with moviepy | |
if (len(marks) > 0): | |
for m in (range(len(marks) - 1)): | |
if (marks[m + 1]): | |
video = VideoFileClip(basepath+"friday.mp4").subclip(marks[m],marks[m + 1]) | |
mod = video.speedx(speed) | |
mod.write_videofile(basepath+"tmp/friday."+str(m).zfill(3) +".mov",codec="libxvid") | |
speed += factor | |
# stick them back together | |
files = glob.glob(basepath+"tmp/*.mov") | |
clips = [] | |
for f in range(len(files)): | |
video = VideoFileClip(files[f]) | |
clips.append(video) | |
# write a new video file called "output.mov" in the basepath directory | |
final = concatenate_videoclips(clips) | |
final.write_videofile(basepath+"output.mov",codec="libxvid") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment