Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_oncolor():
# It doesn't need to be a ColorClip
clip = ColorClip(size=(100, 60), color=(255, 0, 0), duration=0.5)
on_color_clip = clip.on_color(size=(200, 160), color=(0, 0, 255))
location = os.path.join(TMP_DIR, "oncolor.mp4")
on_color_clip.write_videofile(location, fps=24)
assert os.path.isfile(location)
close_all_clips(locals())
def test_subtitles():
red = ColorClip((800, 600), color=(255, 0, 0)).set_duration(10)
green = ColorClip((800, 600), color=(0, 255, 0)).set_duration(10)
blue = ColorClip((800, 600), color=(0, 0, 255)).set_duration(10)
myvideo = concatenate_videoclips([red, green, blue])
assert myvideo.duration == 30
generator = lambda txt: TextClip(txt, font=FONT,
size=(800, 600), fontsize=24,
method='caption', align='South',
color='white')
subtitles = SubtitlesClip("media/subtitles1.srt", generator)
final = CompositeVideoClip([myvideo, subtitles])
final.write_videofile(os.path.join(TMP_DIR, "subtitles1.mp4"), fps=30)
data = [([0.0, 4.0], 'Red!'), ([5.0, 9.0], 'More Red!'),
([10.0, 14.0], 'Green!'), ([15.0, 19.0], 'More Green!'),
def test_setup():
"""Test VideoFileClip setup."""
red = ColorClip((256,200), color=(255,0,0))
green = ColorClip((256,200), color=(0,255,0))
blue = ColorClip((256,200), color=(0,0,255))
red.fps = green.fps = blue.fps = 10
with clips_array([[red, green, blue]]).set_duration(5) as video:
video.write_videofile(os.path.join(TMP_DIR, "test.mp4"))
assert os.path.exists(os.path.join(TMP_DIR, "test.mp4"))
clip = VideoFileClip(os.path.join(TMP_DIR, "test.mp4"))
assert clip.duration == 5
assert clip.fps == 10
assert clip.size == [256*3, 200]
close_all_clips(locals())
def test_PR_424():
"""Ensure deprecation and user warnings are triggered."""
import warnings
warnings.simplefilter('always') # Alert us of deprecation warnings.
# Recommended use
ColorClip([1000, 600], color=(60, 60, 60), duration=10).close()
with pytest.warns(DeprecationWarning):
# Uses `col` so should work the same as above, but give warning.
ColorClip([1000, 600], col=(60, 60, 60), duration=10).close()
# Catch all warnings as record.
with pytest.warns(None) as record:
# Should give 2 warnings and use `color`, not `col`
ColorClip([1000, 600], color=(60, 60, 60), duration=10, col=(2,2,2)).close()
message1 = 'The `ColorClip` parameter `col` has been deprecated. ' + \
'Please use `color` instead.'
message2 = 'The arguments `color` and `col` have both been passed to ' + \
'`ColorClip` so `col` has been ignored.'
# Assert that two warnings popped and validate the message text.
def get_mask(c):
mask = c.mask or ColorClip([1, 1], color=1, ismask=True)
if mask.duration is None:
mask.duration = c.duration
return mask
from typing import Tuple, Optional as Opt
from moviepy.video.VideoClip import ColorClip
import mugen.utility as util
from mugen.video.segments.Segment import Segment
from mugen.utility import convert_color_to_hex_code
class ColorSegment(Segment, ColorClip):
"""
A segment with a color
"""
color: str
@convert_color_to_hex_code(['color'])
def __init__(self, color: str, duration: float = 1, size: Opt[Tuple[int, int]] = (300, 300), **kwargs):
"""
Parameters
----------
color
hex code of the color, i.e. #000000 for black.
OR the special inputs 'black' and 'white'.
"""
super().__init__(size, util.hex_to_rgb(color), duration=duration, **kwargs)
self.fps = max(fpss)
VideoClip.__init__(self)
self.size = size
self.ismask = ismask
self.clips = clips
self.bg_color = bg_color
if use_bgclip:
self.bg = clips[0]
self.clips = clips[1:]
self.created_bg = False
else:
self.clips = clips
self.bg = ColorClip(size, color=self.bg_color)
self.created_bg = True
# compute duration
ends = [c.end for c in self.clips]
if not any([(e is None) for e in ends]):
self.duration = max(ends)
self.end = max(ends)
# compute audio
audioclips = [v.audio for v in self.clips if v.audio is not None]
if len(audioclips) > 0:
self.audio = CompositeAudioClip(audioclips)
# compute mask if necessary
pos
Position of the clip in the final clip. 'center' is the default
col_opacity
Parameter in 0..1 indicating the opacity of the colored
background.
"""
from .compositing.CompositeVideoClip import CompositeVideoClip
if size is None:
size = self.size
if pos is None:
pos = 'center'
colorclip = ColorClip(size, color=color)
if col_opacity is not None:
colorclip = (ColorClip(size, color=color, duration=self.duration)
.set_opacity(col_opacity))
result = CompositeVideoClip([colorclip, self.set_position(pos)])
else:
result = CompositeVideoClip([self.set_position(pos)],
size=size,
bg_color=color)
if (isinstance(self, ImageClip) and (not hasattr(pos, "__call__"))
and ((self.mask is None) or isinstance(self.mask, ImageClip))):
new_result = result.to_ImageClip()
if result.mask is not None:
new_result.mask = result.mask.to_ImageClip()
return new_result.set_duration(result.duration)
col_opacity
Parameter in 0..1 indicating the opacity of the colored
background.
"""
from .compositing.CompositeVideoClip import CompositeVideoClip
if size is None:
size = self.size
if pos is None:
pos = 'center'
colorclip = ColorClip(size, color=color)
if col_opacity is not None:
colorclip = (ColorClip(size, color=color, duration=self.duration)
.set_opacity(col_opacity))
result = CompositeVideoClip([colorclip, self.set_position(pos)])
else:
result = CompositeVideoClip([self.set_position(pos)],
size=size,
bg_color=color)
if (isinstance(self, ImageClip) and (not hasattr(pos, "__call__"))
and ((self.mask is None) or isinstance(self.mask, ImageClip))):
new_result = result.to_ImageClip()
if result.mask is not None:
new_result.mask = result.mask.to_ImageClip()
return new_result.set_duration(result.duration)
return result