def test_subtitles(util): red = ColorClip((800, 600), color=(255, 0, 0)).with_duration(10) green = ColorClip((800, 600), color=(0, 255, 0)).with_duration(10) blue = ColorClip((800, 600), color=(0, 0, 255)).with_duration(10) myvideo = concatenate_videoclips([red, green, blue]) assert myvideo.duration == 30 generator = lambda txt: TextClip( txt, font=util.FONT, size=(800, 600), font_size=24, method="caption", align="South", color="white", ) subtitles = SubtitlesClip("media/subtitles.srt", generator) final = CompositeVideoClip([myvideo, subtitles]) final.subclip(0, 0.5).write_videofile( os.path.join(util.TMP_DIR, "subtitles.mp4"), fps=5, logger=None, ) assert subtitles.subtitles == MEDIA_SUBTITLES_DATA subtitles = SubtitlesClip(MEDIA_SUBTITLES_DATA, generator) assert subtitles.subtitles == MEDIA_SUBTITLES_DATA
def test_set_layer(): bottom_clip = BitmapClip([["ABC"], ["BCA"], ["CAB"]], fps=1).set_layer(1) top_clip = BitmapClip([["DEF"], ["EFD"]], fps=1).set_layer(2) composite_clip = CompositeVideoClip([bottom_clip, top_clip]) reversed_composite_clip = CompositeVideoClip([top_clip, bottom_clip]) # Make sure that the order of clips makes no difference to the composite clip assert composite_clip.subclip(0, 2) == reversed_composite_clip.subclip(0, 2) # Make sure that only the 'top' clip is kept assert top_clip.subclip(0, 2) == composite_clip.subclip(0, 2) # Make sure that it works even when there is only one clip playing at that time target_clip = BitmapClip([["DEF"], ["EFD"], ["CAB"]], fps=1) assert composite_clip == target_clip