Skip to content

Commit

Permalink
Merge pull request #490 from earney/examples
Browse files Browse the repository at this point in the history
  • Loading branch information
bearney74 committed Mar 13, 2017
2 parents caf955c + 6d44a75 commit 4a792c0
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 4 deletions.
11 changes: 7 additions & 4 deletions moviepy/video/compositing/concatenate.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,15 @@ def make_frame(t):
i = max([i for i, e in enumerate(tt) if e <= t])
return clips[i].get_frame(t - tt[i])

def get_mask(c):
mask = c.mask or ColorClip([1, 1], col=1, ismask=True)
if mask.duration is None:
mask.duration = c.duration
return mask

result = VideoClip(ismask = ismask, make_frame = make_frame)
if any([c.mask is not None for c in clips]):
masks = [c.mask.set_duration(c.duration) if (c.mask is not None) else
ColorClip([1,1], col=1, ismask=True, duration=c.duration)
#ColorClip(c.size, col=1, ismask=True).set_duration(c.duration)
for c in clips]
masks = [get_mask(c) for c in clips]
result.mask = concatenate_videoclips(masks, method="chain", ismask=True)
result.clips = clips
elif method == "compose":
Expand Down
44 changes: 44 additions & 0 deletions tests/test_examples.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import pytest
from moviepy.editor import *
import moviepy.video.tools.cuts as cuts

import sys
sys.path.append("tests")
import download_media

def test_download_media(capsys):
with capsys.disabled():
download_media.download()

def test_matplotlib():
#for now, python 3.5 installs a version of matplotlib that complains
#about $DISPLAY variable, so lets just ignore for now.
if sys.version_info < (3,4):
return

if sys.version_info.major == 3 and sys.version_info.minor == 5:
return

import matplotlib.pyplot as plt
import numpy as np
from moviepy.editor import VideoClip
from moviepy.video.io.bindings import mplfig_to_npimage

x = np.linspace(-2, 2, 200)

duration = 2

fig, ax = plt.subplots()

def make_frame(t):
ax.clear()
ax.plot(x, np.sinc(x**2) + np.sin(x + 2*np.pi/duration * t), lw=3)
ax.set_ylim(-1.5, 2.5)
return mplfig_to_npimage(fig)

animation = VideoClip(make_frame, duration=duration)
animation.write_gif('/tmp/matplotlib.gif', fps=20)


if __name__ == '__main__':
pytest.main()

0 comments on commit 4a792c0

Please sign in to comment.