def annotate(clip, txt, speaker, txt_color='white', fontsize=30, font='Arial'): """ Writes a text at the bottom of the clip. """ txt_colors = ['red', 'black', 'white', 'blue', 'green'] txtclip = TextClip(txt, fontsize=fontsize, font=font, color=txt_colors[speaker]) cvc = CompositeVideoClip([clip, txtclip.set_pos(('center', 'bottom'))]) return cvc.set_duration(clip.duration)
def annotate(chip, txt, txt_color='white', font_size=20): txt_clip = TextClip(txt, fontsize=font_size, color=txt_color) cvc = CompositeVideoClip( [chip, txt_clip.set_position(("center", "bottom"))]) return cvc.set_duration(chip.duration)
sys.stdout.write('\r') sys.stdout.write("Wrote %s to file" % p["filename"]) sys.stdout.flush() if a.OVERWRITE: removeFiles(a.OUTPUT_FRAME % "*") drawData = sampledata + phrasedata threads = getThreadCount(a.THREADS) pool = ThreadPool(threads) pclipsToFrame = partial(doFrame, totalFrames=totalFrames, drawData=drawData) pool.map(pclipsToFrame, frameProps) pool.close() pool.join() annotationVideoFn = appendToBasename(a.OUTPUT_FILE, "_annotation") if a.OVERWRITE or not os.path.isfile(annotationVideoFn): compileFrames(a.OUTPUT_FRAME, fps, annotationVideoFn, getZeroPadding(totalFrames)) annotationVideo = VideoFileClip(annotationVideoFn, audio=False) clips = [annotationVideo, baseVideo] video = CompositeVideoClip(clips, size=(a.WIDTH, a.HEIGHT)) video = video.set_duration(duration) if a.QUALITY == "high": video.write_videofile(a.OUTPUT_FILE, preset="slow", audio_bitrate="256k", audio_fps=48000, bitrate="19820k") else: video.write_videofile(a.OUTPUT_FILE) print("Wrote %s to file" % a.OUTPUT_FILE)
intro_text.write_videofile(intro_video_dir) # overlaying text on the original video w, h = video_clip.size watermark_text = TextClip(txt='CFE', fontsize=30, align='East', color='white', size=(w, 30)) watermark_text = watermark_text.set_fps(video_clip.fps) watermark_text = watermark_text.set_duration(video_clip.duration) watermark_text = watermark_text.set_position('bottom') # ordering of clip is important in CompositeVideoClip cvc = CompositeVideoClip([video_clip, watermark_text], size=video_clip.size) cvc = cvc.set_duration(video_clip.duration) cvc = cvc.set_fps(video_clip.fps) # if above does not work: # cvc = CompositeVideoClip([watermark_text], size=video_clip.size) # cvc = cvc.set_duration(video_clip.duration) # cvc = cvc.set_fps(video_clip.fps) # overlay_clip = CompositeVideoClip([video_clip, cvc], size=video_clip.size) # overlay_clip = overlay_clip.set_duration(video_clip.duration) # overlay_clip = overlay_clip.set_fps(video_clip.fps) # og_audio = AudioFileClip(og_audio_path) # overlay_clip = overlay_clip.set_audio(og_audio) # final_clip = concatenate_videoclips([intro_text, overlay_clip])
intro_text = intro_text.set_duration(intro_duration) intro_text = intro_text.set_fps(fps) intro_text = intro_text.set_pos("center") # to add audio to your intro: intro_music = audio_clip.subclip(25, 30) intro_text = intro_text.set_audio(intro_music) watermark_size = 50 watermark_text = TextClip(watermark, fontsize=watermark_size, color='black', align='East', size=(w, watermark_size)) watermark_text = watermark_text.set_fps(fps) watermark_text = watermark_text.set_duration(video_clip.reader.duration) watermark_text = watermark_text.margin(left=10, right=10, bottom=2, opacity=0) watermark_text = watermark_text.set_position(("bottom")) watermarked_clip = CompositeVideoClip([video_clip, watermark_text], size=video_clip.size) watermarked_clip = watermarked_clip.set_duration(video_clip.reader.duration) watermarked_clip = watermarked_clip.set_fps(fps) watermarked_clip = watermarked_clip.set_audio(final_audio) final_clip = concatenate_videoclips([intro_text, watermarked_clip]) final_clip.write_videofile(final_video_path, codec='libx264', audio_codec="aac")