MoviePy: Difference between revisions
(Created page with "Here's a file that should be called "srt.py": <source lang="python"> import re def srtparse (src): """ parse srt src (string), returns list of dicts with start, end, time...") |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Examples of using the python library [http://zulko.github.io/moviepy/ MoviePy] | |||
== Summarizing a video == | |||
<source lang="python"> | |||
from moviepy.editor import * | |||
clip = VideoFileClip("CC501_hypercard.ogv")# .subclip(10, 15) | |||
x = clip.subclip(10, 15) | |||
# x.write_videofile("x.webm") | |||
p = [] | |||
# ADD STUFF TO OUR PLAYLIST | |||
for i in range(0, int(clip.duration), 60): | |||
print "i am editing from", i, "to", i+1 | |||
x = clip.subclip(i, i+1) | |||
p.append(x) | |||
# SAVE THE MOVIE | |||
n = concatenate_videoclips(p) | |||
n.write_videofile("loop.webm") | |||
</source> | |||
== Cutting with subtitles (videogrep) == | |||
Here's a file that should be called "srt.py": | Here's a file that should be called "srt.py": | ||
<source lang="python"> | <source lang="python"> | ||
Line 56: | Line 87: | ||
out = concatenate_videoclips(cc) | out = concatenate_videoclips(cc) | ||
out.write_videofile("uh.webm") | out.write_videofile("uh.webm") | ||
</source> | |||
== Auto titling a clip from archive.org == | |||
<source lang="python"> | |||
from moviepy.editor import * | |||
from urllib2 import urlopen | |||
import json | |||
clip = VideoFileClip("Purely Python Imaging with Pymaging-OpnmcItfiHc.mp4") | |||
print clip.duration | |||
# d = "Hello World" | |||
data = json.load(urlopen("https://archive.org/details/CC501_hypercard?output=json")) | |||
# print data | |||
d = data['metadata']['description'][0] | |||
# print "the description from archive . org is", d | |||
t = TextClip(d, fontsize=36, color="white", method="caption", size=(640, 480)).set_duration(10) | |||
# t.fps = 24 | |||
# t.write_videofile("autotitle.webm") | |||
o = concatenate_videoclips([t, clip.subclip(0, 10)], method="compose") | |||
# o.fps = 24 | |||
o.write_videofile("autotitle.webm") | |||
</source> | </source> |
Latest revision as of 16:58, 3 February 2015
Examples of using the python library MoviePy
Summarizing a video
from moviepy.editor import *
clip = VideoFileClip("CC501_hypercard.ogv")# .subclip(10, 15)
x = clip.subclip(10, 15)
# x.write_videofile("x.webm")
p = []
# ADD STUFF TO OUR PLAYLIST
for i in range(0, int(clip.duration), 60):
print "i am editing from", i, "to", i+1
x = clip.subclip(i, i+1)
p.append(x)
# SAVE THE MOVIE
n = concatenate_videoclips(p)
n.write_videofile("loop.webm")
Cutting with subtitles (videogrep)
Here's a file that should be called "srt.py":
import re
def srtparse (src):
""" parse srt src (string), returns list of dicts with start, end, timecode, content """
spat = re.compile(r"^(?:\d+\n)?((?:\d\d:)?\d\d:\d\d(?:,\d\d\d)? *--> *(?:(?:\d\d:)?\d\d:\d\d(?:,\d\d\d)?)?)$", re.M)
tcpat = re.compile(r"(?:(\d\d):)?(\d\d):(\d\d)(?:,(\d\d\d))? *--> *(?:(?:(\d\d):)?(\d\d):(\d\d)(?:,(\d\d\d))?)?")
# spat = re.compile(r"^(?:\d+\n)?(\d\d:\d\d:\d\d(?:[,\.]\d\d\d)? --> \d\d:\d\d:\d\d(?:[,\.]\d\d\d)?)$", re.M)
# tcpat = re.compile(r"(\d\d):(\d\d):(\d\d)(?:[,\.](\d\d\d))? --> (\d\d):(\d\d):(\d\d)(?:[,\.](\d\d\d))?")
tt = spat.split(src)
ret = []
for i in range(1, len(tt), 2):
timecode = tt[i]
content = tt[i+1]
tcs = tcpat.match(timecode).groups()
if tcs[3] == None:
start = (int(tcs[0])*3600) + (int(tcs[1])*60) + float(tcs[2])
else:
start = (int(tcs[0])*3600) + (int(tcs[1])*60) + float(tcs[2]+"."+tcs[3])
if tcs[4]:
if tcs[7] == None:
end = (int(tcs[4])*3600) + (int(tcs[5])*60) + float(tcs[6])
else:
end = (int(tcs[4])*3600) + (int(tcs[5])*60) + float(tcs[6]+"."+tcs[7])
else:
end = None
ret.append({
'start': start,
'end': end,
'timecode': timecode,
'content': content.strip()
})
return ret
A script to load subtitles, and edit together all instances of an "uh"...
from srt import srtparse
from moviepy.editor import *
m = "Purely Python Imaging with Pymaging-OpnmcItfiHc"
with open(m+".en.srt") as f:
tt = srtparse(f.read())
clip = VideoFileClip(m+".mp4")
cc = []
for t in tt:
if 'uh' in t['content']:
cc.append(clip.subclip(t['start'], t['end']))
out = concatenate_videoclips(cc)
out.write_videofile("uh.webm")
Auto titling a clip from archive.org
from moviepy.editor import *
from urllib2 import urlopen
import json
clip = VideoFileClip("Purely Python Imaging with Pymaging-OpnmcItfiHc.mp4")
print clip.duration
# d = "Hello World"
data = json.load(urlopen("https://archive.org/details/CC501_hypercard?output=json"))
# print data
d = data['metadata']['description'][0]
# print "the description from archive . org is", d
t = TextClip(d, fontsize=36, color="white", method="caption", size=(640, 480)).set_duration(10)
# t.fps = 24
# t.write_videofile("autotitle.webm")
o = concatenate_videoclips([t, clip.subclip(0, 10)], method="compose")
# o.fps = 24
o.write_videofile("autotitle.webm")