from IPython.display import HTML HTML(""" """) from moviepy.editor import * import os import re # to parse this file to make the credits W, H = 720, 404 # dimensions of the final video # These very useful functions resize the clips to # the dimensions of the final video VideoFileClip.reW = lambda clip : clip.resize(width=W) VideoFileClip.reH = lambda clip : clip.resize(height=H) theCupSong = TextClip('The Cup Song\nYoutube Covers Mix', fontsize=50, font="Ubuntu-Regular", color = 'white')\ .set_pos(('center', 0.24*H)) editedby = TextClip('Edited by A. de Lamarmotte', fontsize=28, font="Ubuntu-Regular", color = 'gray')\ .set_pos(('center', 0.58*H)) titleScreen = CompositeVideoClip([theCupSong, editedby], size = (W,H))\ .set_duration(3)\ .fadeout(0.5) kara = VideoFileClip("./girl_acapella/xkaraxmusicx.mp4") kid = VideoFileClip("./male/DrewMannMusic.mp4") talia = VideoFileClip("./girl_acapella/taliajoy18.mp4") jencar = VideoFileClip("./male/hoorahjencar.mp4") riley = VideoFileClip("./girl_acapella/hoosierfamily.mp4") clown = VideoFileClip("./girl_acapella/salvadorzepeda68.mp4") nicoleKim = VideoFileClip("./girl_acapella/NicoleKim.mp4") kara_p = ( kara.subclip(0.55,4.45) .reW() .crop(y2=H) .fadein(0.5) ) kid_p= ( kid.subclip(1.35,1.85) .crop(x1=44, x2=-45) .reH() .set_pos('left') .margin( right=2, color=3*[255]) .volumex(1.5) ) talia_p = (talia.subclip(3.53,4) .reH() .crop(x1=22, x2=-22) .set_pos((kid_p.w-2,0)) .margin( right=2, left=2, color=3*[255]) ) jencar_p = ( jencar.subclip(1.79,2.23) .crop( x1=241, x2=-242) .reH() .margin(right=2, left=2, color=3*[255]) .set_pos(( kid_p.w + talia_p.w-4 ,0)) .volumex(0.7) ) riley_p = (riley.subclip(9.25,9.75) .crop( x1=20, x2=-47) .reH() .margin(left=2, color=3*[255]) .set_pos((jencar_p.w + kid_p.w + talia_p.w-6,0)) ) clown_p = (clown.subclip(6.6,7.1) .crop( x1=410, x2=-550) .reH() .margin(left=2, right=2, color=3*[255])) clown_p = clown_p.set_pos((riley_p.pos(0)[0] - clown_p.w+2,0)) nicoleKim_p = ( nicoleKim.subclip(7.4,8.0) .reH() .crop( x1=280,x2=280+W/4 ) .margin( left=2, right=2, color=3*[255]) .set_pos((W/4,0)) ) d = 0.52 cc = CompositeVideoClip([ kid_p, talia_p.set_start(d+.01), jencar_p.set_start(2*d+.00), nicoleKim_p.set_start(5*d), clown_p.set_start(4*d), riley_p.set_start(3*d-.01)], size=(W,H)) first_rythm = concatenate([kara_p, cc]) anna = VideoFileClip("./girl_acapella/Anna Burden.mp4") malia = VideoFileClip("./girl_acapella/MaliaRogersMusic.mp4") halie = VideoFileClip("./girl_acapella/Halie Ranee.mp4") cooper = VideoFileClip("./girl_acapella/eveecooper.flv") speedstack = VideoFileClip("./girl_acapella/theaterobsession101.mp4") faraz = VideoFileClip("./male/Faraz Sabir.mp4") amyspants = VideoFileClip("./amyspants.mp4") miriam = VideoFileClip("./girl_acapella/Miriam Carone.mp4") kristina = VideoFileClip("./girl_acapella/Kristina G.mp4") irene = VideoFileClip("./girl_acapella/Irene Poon.mp4") two_little_girls = VideoFileClip("./duet/MuggleSam.mp4") school_choir_PS22 = VideoFileClip("./choir/PS22 Chorus.mp4") piano = VideoFileClip("./instrumental/Jasper Tan.mp4") shae = VideoFileClip("./uke_guitar_song/McKenna Shae.mp4") from scipy.interpolate import interp1d # These complicated interpolation define the movement of the clip anna1 = interp1d([-1,1.0,2,8.1,8.8,11.0,11.4,22], [190,190,112,112,190,190,170,170]) anna2 = interp1d([-1,1.0,2,8.1,8.8,11.0,11.4,22], [190+W/4,190+W/4,112+W/2,112+W/2, 190+W/4,190+W/4,170+W/3,170+W/3]) anna_p = (anna .subclip(8) .reH() .fl(lambda gf,t: gf(t)[:,int(anna1(t)):int(anna2(t))]) .volumex(1.2) .set_duration(18) .set_pos(lambda t:("left" if (t<11.0) else min(480,1000*(t-11.0)),0))) malia_p = (malia .reH() .subclip(17.18) .crop(x1=185,x2=185+W/2) .margin(left=3,color= (255,255,255)) .set_pos("right") .volumex(0.8) .set_start(anna_p.start+ 4.65) .set_end(anna_p.start+8.8)) cooper_p = (cooper.crop(y1=50) .reH() .crop(x1=304, x2 = 304+W/4) .margin(left=1,right=1,color=3*[255]) .subclip(13.65) .volumex(0.6) .set_start(anna_p.start+8.1) .set_end(anna_p.start+10.3)) ww = cooper_p.w cooper_p = cooper_p.set_pos(lambda t:(W-2*ww,min(0,1000*t-H))) halie_p = (halie.subclip(15.6) .reH() .crop(x1=258, x2 = 258+W/4) .margin(left=1,right=1,color=3*[255]) .volumex(0.6) .set_start(anna_p.start+8.1) .set_end(anna_p.start+10.3) .set_pos(lambda t:(W-3*ww,max(0,H-1000*t)))) speed_stack_p = (speedstack.subclip(35.27) .reH() .crop(x1=160, x2 = 160+W/4) .margin(left=1,color=3*[255]) .volumex(0.6) .set_start(anna_p.start+8.1) .set_end(anna_p.start+10.3) .set_pos(lambda t:(W-ww,max(0,H-1000*t)))) faraz_p = (faraz.subclip(25.9) .reH() .crop( x1=100, x2=100+3*W/4) .fl(lambda gf, t: gf(t)[:,(0 if (t<0.9) else int(1000*(t-0.9))):]) .fadeout(0.2) .crossfadein(0.2) .volumex(2.4) .set_start(anna_p.start+10.1) .set_end(anna_p.start+11.6) .audio_fadeout(0.1) .set_pos('right')) amyspants_p = (amyspants .subclip(19.4,22) .margin(12,color=(255,255,255)) .resize( width=2*W/3-20) .set_pos((10,'center')) .fadein( 0.5) .fadeout( 0.5) .audio_fadein(0.3) .set_start(anna_p.start+12.29)) shae_p = (shae .subclip(25.6) .reH() .crop(x1=240, x2 = 240+W/3) .margin(right=3, color=(255,255,255)) .audio_fadein(0.7) .volumex(0.6) .set_start(anna_p.start+16.1) .set_end(anna_p.start+22) .audio_fadeout(0.3) .set_pos(lambda t:(min(240,-240+1000*t),0)) ) two_little_girls_p = (two_little_girls .subclip(34.25) .reH() .crop(x1=170, x2=170+360+60) .margin( right=2, color=(255,255,255)) .set_start(anna_p.start+14.9) .set_end(anna_p.start+23.5) .audio_fadeout(0.5) .set_pos( lambda t:( -180 if t<5.3 else min(0,-150+500*(t-5.3)),0))) school_choir_PS22_p = (school_choir_PS22 .reH() .volumex(0.3) .subclip(29.6) .crop(x1=140, x2=140+W/2) .set_start(anna_p.start+16.24) .set_end(anna_p.start+24.5) .audio_fadeout(0.5) .margin(left=3,color=(255,255,255)) .crossfadein( 2) .fadeout(0.5) .set_pos(lambda t:(W-240 if t<4 else max(W/2,W-240-500*(t-4)),0)) ) ### PIANO piano_p = (piano .subclip(43,53.1) .reW() .set_pos("bottom") .crop(y1=145,y2=278) .margin(top=2,color=(255,255,255)) .crossfadein(1) .audio_fadeout(0.8) .audio_fadeout(0.8) .volumex(.7) .set_start(anna_p.start+22.2) ) miriam_p = (miriam .subclip(25.8,31) .resize(height=H-piano_p.h) .volumex(0.8) .crop( x1=120,x2=120+W/3) .margin( right=2, color=3*[255]) .crossfadein(0.3) .set_start(piano_p.start + 1.55) .set_end(piano_p.start + 5.65) .audio_fadeout(0.4) .fadeout(.2) .set_pos(('left','top')) ) kristina_p = (kristina .subclip(33.20) .resize(height=H-piano_p.h) .volumex(0.8) .crop(x1=110,x2=110+W/3) .margin(left=2, color=3*[255]) .crossfadein(0.3) .set_start(piano_p.start + 3.53) .set_end(piano_p.start + 5.65) .audio_fadeout(0.4) .fadeout(.3) .set_pos(('center','top'))) irene_p = (irene .subclip(39.4,43.5) .resize( height=H-piano_p.h) .crop( x1=70,x2=70+W/3) .margin( left=2, color=3*[255]) .set_start(piano_p.start + 5.80) .crossfadein(0.3) .fadeout(.3) .set_pos(('right','top')) ) first_verse = CompositeVideoClip([ faraz_p, # not chronological, but must be under every other video anna_p, malia_p, halie_p, speed_stack_p, cooper_p, amyspants_p, shae_p, two_little_girls_p, school_choir_PS22_p, piano_p, miriam_p, kristina_p, irene_p], size=(W,H)) #final.subclip(15,27).audio.to_audiofile("test.ogg") #final.show(10) rainbelle = VideoFileClip("./duet/rainbelle99.mp4") cup_kids = VideoFileClip("./trio/patmartel100.mp4") girls_complex = VideoFileClip("./cup_only/gimmiebeanstheband.mp4") cantina_band = VideoFileClip("./choir/SMCdramaclub .mp4") allSheKnows = VideoFileClip('./male/AllSheKnows.mp4') harvard = VideoFileClip('./cup_only/HarvardTHUD.mp4') rsnmusik = VideoFileClip("./cup_only/RSNmusik.mp4") rainbelle_p = (rainbelle.subclip(7.1,10.55) .reW() .crop(y2=H) .fadein(.15) .volumex(0.6) ) cup_kids_p = (cup_kids.subclip(278.80,279.20) .reH() .audio_fadein(0.1) ) harvard_p = (harvard.subclip(17.90,18.34) .reW() .crop(y2=H)) cantina_band_p = (cantina_band.subclip(25.25,25.6) .reH() .audio_fadein(0.1) ) allSheKnows_p = (allSheKnows.subclip(35.20,35.97) .reH()) girls_complex_p = (girls_complex.subclip(32.00,32.78) .reH()) rsnmusik_p = (rsnmusik .subclip(20.16,20.66) .volumex(0.6) .reW() .crop(y2=220) ) inter_rythm = concatenate([ rainbelle_p, cup_kids_p, harvard_p, cantina_band_p, allSheKnows_p, girls_complex_p, rsnmusik_p]) #inter_rythm.audio.preview() #inter_rythm.to_videofile('test.mp4', bitrate='6000k') until_inter_rythm = concatenate( [titleScreen, first_rythm, first_verse, inter_rythm]) original_lulu = VideoFileClip("./duet/Lulapinga.mp4") ally_turner = VideoFileClip("./girl_acapella/Ally Turner.mp4") daiyan = VideoFileClip("./girl_acapella/Daiyan Trisha.mp4") sita_lizzie = VideoFileClip("./duet/Sita Lizzie.mp4") jocelyne = VideoFileClip("./duet/Jocelyne Van Den Meersche.mp4") amanda = VideoFileClip("./girl_acapella/amandayanggg.mp4") people_mountain = VideoFileClip("./choir/Camp Kulin.mp4") duo_alaska = VideoFileClip("./duet/Satrina Lord.mp4") steph = VideoFileClip("./girl_acapella/stephulahoops.mp4") katrina = VideoFileClip("./uke_guitar_song/katrinamelody.mp4") choir_black_cloths = VideoFileClip("./choir/Genesee Noelani.mp4") txt = TextClip('The original cup song', font='Ubuntu-Bold', fontsize=22) txt_original_cupsong = (txt .on_color(size=(txt.w+6, txt.h + 6), color=3*[255]) .margin(1) .margin( bottom=30,right=30, opacity=0.0) .set_pos(('right','bottom')) .set_duration(1.5) ) txt_original_cupsong.show() original_lulu_p = (original_lulu.subclip(50,56.7) .reH() .set_pos('center') .set_end(5.6) .audio_fadeout(0.2)) ally_turner_p = (ally_turner.subclip(45.5,47.5) .crop( x1 = 400, x2= 950) .resize( height=0.45*H) .margin( 2, color=3*[255]) .margin(right=20, opacity=0) .set_pos(('right','center')) .set_start(1.8)) wby,hby= ally_turner_p.size ally_turner_p.pos = lambda t: (W-wby-20,'center') daiyan_p = (daiyan.subclip((1,31),(1,33)) .crop( x1 = 117, x2= 362) .resize(height=0.45*H) .margin(2, color=3*[255]) .margin(left=20, opacity=0) .set_pos(('left','center')) .set_start(1.8) ) from scipy.interpolate import interp1d sita_lizzie_p= ( sita_lizzie.subclip(51.2,55.4) .reW() .audio_fadein(0.2) .crop( x1 = 38, x2=-82, y1=21,y2=358) .resize( height =0.33*H) .margin( 2, color=3*[255]) .set_start(3.8) .set_end(6.7) .crossfadeout(1) ) wgsv,hgsv = sita_lizzie_p.size itr_gsv = interp1d([-1,0,0.2,10], [W/2 - wgsv/2,W/2 - wgsv/2, W-wgsv-10, W-wgsv-10 ]) sita_lizzie_p.pos = lambda t: (itr_gsv(t),H/2)# H-hgsv-10) jocelyne_p = (jocelyne.subclip(44.95) .crop(x1=85, x2=598, y1=27, y2=315) .resize( height=0.33*H) .margin( 2, color=3*[255]) .set_start(1.8) .set_end(6.7) .crossfadeout(1) .volumex(0.4) .audio_fadein(0.2)) w_joc, h_joc = jocelyne_p.size itr_joc = interp1d([-1,2,2.2,10], [W/2 - w_joc/2,W/2 - w_joc/2, 10, 10]) jocelyne_p.pos = lambda t: (itr_joc(t),H/2) d = 2.5 amanda_p= (amanda.subclip(51.0,59) .crop( x1=50, x2 = 50+W/2) .resize( width=140) .margin( 2, color=3*[255]) .crossfadein(0.2) .margin( right=10,top=10,opacity=0) .set_pos(('right','top')) .volumex(1.3) .audio_fadein(2) .set_start(5.5) ) people_mountain_p = ( people_mountain.subclip(49.9,51) .reW() .volumex(1.5) .set_start(6.7)) duo_alaska_p = (duo_alaska.subclip(56.5,57.5) .reW() .crop(y1=-H) .volumex(1.2) .set_pos('center') .set_start(7.35)) katrina_p = ( katrina.subclip(38.15+d,58) .crop( x1=138, x2=342) .reH() .margin( right=2, color=3*[255]) .audio_fadein( 0.1) .set_pos('left') .set_start(amanda_p.start + d) .set_end(13.53) .audio_fadeout(.1)) steph_p = (steph.subclip(52.85+d,59) .reH() .crop( x1=150, x2=150+W-katrina_p.w) .margin( left=2, color=3*[255]) .volumex( 1.8) .set_pos('right') .set_start(katrina_p.start) .set_end(10.5) .audio_fadein( 0.5) .audio_fadeout( 0.5) ) choir_black_cloths_p = (choir_black_cloths .subclip((1,38.1),(1,43)) .reH() .crop( x2= W-katrina_p.w) .volumex(0.5) .audio_fadein(0.5) .crossfadein(0.5) .set_pos('right') .set_start(10.0) .set_end(13.6) .audio_fadeout(1)) second_verse = CompositeVideoClip([ original_lulu_p, txt_original_cupsong, ally_turner_p, daiyan_p, jocelyne_p, people_mountain_p, duo_alaska_p, sita_lizzie_p, steph_p, choir_black_cloths_p, katrina_p, amanda_p ], size = (W,H)) second_verse_start = until_inter_rythm.duration -.14 until_second_verse = CompositeVideoClip( [until_inter_rythm, second_verse.set_start(second_verse_start)]) #until_second_verse.audio.subclip(start-4, start+4).preview() hannah_elless = VideoFileClip("./trio/Hannah Elless.mp4") # First of three marj = VideoFileClip("./girl_acapella/Marjorie Reboul.mp4") thomas = VideoFileClip("./male/Thomas Graff.mp4") camshie = VideoFileClip("./trio/Camshie Tejada.mp4") # Second of three raRaRileyStraw = VideoFileClip("./male/RaRaRileyStraw.mp4") kira_mackenzie = VideoFileClip("./duet/Kira Pleska and Mackenzie Ziegler.mp4") rachel = VideoFileClip("./duet/Rachel Nheu.mp4") bass = VideoFileClip("./instrumental/Ankadiov Subran.mp4") violin_guitar = VideoFileClip("./instrumental/David Wong.mp4") flute = VideoFileClip("./instrumental/Laura Mew.mp4") clarinet = VideoFileClip("./instrumental/clANAnett.mp4") katie = VideoFileClip("./girl_acapella/Katie Floyd.mp4") allyPaige = VideoFileClip("./girl_acapella/AllyyyPaige.mp4") camryn = VideoFileClip("./girl_acapella/Camryn Harder.mp4") richard = VideoFileClip("./male/Richard Beilfuss.mp4") haven = VideoFileClip("./uke_guitar_song/Scott Slay.mp4") lizzie = VideoFileClip("./ASL/lizzieejudee.mp4") nicole = VideoFileClip("./uke_guitar_song/Nicole Zhang.mp4") M = 20 B = 45 hannah_elless_p = (hannah_elless.subclip(79.31,91.00) .crop(y1=40,y2=-30,x1=50, x2=-50) .resize(width=.4*W) .fadein(1) .audio_fadein(.1) .audio_fadeout(.1) .margin(1, color=3*[255]) .margin(right=B, bottom=M, opacity=0) .set_pos(('right', 'bottom'))) # ================== marj_p = (marj .subclip(5.9,7.4) .resize(width= .4*W) .margin(1, color=3*[255]) .margin(left=B, top=M, opacity=0) .set_pos(('left', 'top'))) thomas_p = ( thomas.subclip(0.6) .set_duration(marj_p.duration) .resize(width=.4*W) .crop(y2=-1, height = hannah_elless_p.h-M) .margin(1, color=3*[255]) .margin(left=B, bottom=M, opacity=0) .set_pos(('left', 'bottom')) .audio_fadein(.1) .audio_fadeout(.1)) camshie_p = (camshie.subclip(5.2) .set_duration(marj_p.duration) .resize(width= .4*W) #.crop(y1= -marj_p.h-50, height=marj_p.h-M) .margin(1, color=3*[255]) .margin(right=B, top=M, opacity=0) .set_pos(('right', 'top'))) # ================== rachel_p = (rachel.subclip(5.85,7.65) .resize(width=.4*W) .margin(1, color=3*[255]) .margin(right=B, top=M, opacity=0) .set_pos(('right', 'top')) .audio_fadein(.1)) kira_mackenzie_p = (kira_mackenzie.subclip(45.9, 50) .crop(x2=-50) .resize(width=.4*W) .crop(y2=-10, height = rachel_p.h-M) .margin(1, color=3*[255]) .margin(left=B, top=M, opacity=0) .audio_fadein(.1) .crossfadeout(.5) .set_pos(('left', 'top')) .audio_fadeout(.1)) raRaRileyStraw_p = (raRaRileyStraw.subclip(10.35) .set_duration(rachel_p.duration) .resize(width=.4*W) .crop(y1=10, height = hannah_elless_p.h-M) .margin(1, color=3*[255]) .margin(left=B, bottom=M, opacity=0) .set_pos(('left', 'bottom')) .audio_fadein(.1) .audio_fadeout(.1)) af_start=17 Hbottom = 3*H/5+2 M = 20 violin_guitar_p = ( violin_guitar.subclip(30.25,37) .crop(y1=100) .resize( height=Hbottom) .crop(x1=0, width=2.0*W/3) .volumex(1.5) #.subfx(lambda cl: cl.crop(x1=0, width=W/3),0,.9 ) .margin( right=2, bottom=2, color=3*[255]) .set_pos(('left','top')) .set_start(12.8) .audio_fadein(.1) .audio_fadeout(.5)) T_bass=1.2 bass_p = ( bass.subclip((1,8.95-T_bass),(1,16.5)) .crop(x1=92, x2=-80) .audio_fadeout(.05) .volumex(1.0) .resize(width = 2.0*W/7) .margin( top=2, right=2, color=3*[255] ) .set_pos(('left',Hbottom)) ) clarinet_p = ( clarinet.subclip(25.9,31) .volumex( 0.5) .crop( x1=73, x2=-101) .resize( width=2.0*W/7-1) .margin( top=2, left=2, color=3*[255]) .set_pos(('right', Hbottom)) .set_start(13.8)) print clarinet_p.h flute_p = ( flute.subclip(22.35) .reH() .set_duration(violin_guitar_p.duration) .audio_fadeout(1) .volumex( 1.3) .resize(width=3.0*W/7) .margin(top=2, color=3*[255]) .set_pos(('center',Hbottom)) .set_start(13.8)) katie_p = ( katie.subclip(23.1,27) .volumex(1.6) .audio_fadein(.1) .resize(height=Hbottom) .crop( x1=10, x2=10+W/3) .margin(left=2, color=3*[255]) .set_pos(('right','top'))) allyPaige_p = ( allyPaige.subclip(31.35,37.8) .audio_fadeout(1) .crop(x1=70, x2=-300, y1=50) .resize( height=Hbottom) .crop( x1=75, width=W/3) .margin(left=2, right=2, color=3*[255]) .set_pos((W/3,'top'))) camryn_p = ( camryn.subclip(26.45,29.4) .crop(x1=300, x2=-300, y2=-100) .resize(height=Hbottom) .crop(x1=10, width=W/3) .margin(left=2, color=3*[255]) .set_pos(('right', 'top'))) richard_p = (richard.subclip((1,13.05),(1,16.5)) .audio_fadein(.1) .audio_fadeout(.5) .crop(y1=45,x1=70) .resize(width = clarinet_p.w) .margin(top=2, left=2, color=3*[255]) .set_pos(('right',Hbottom)) .volumex(2.5) ) haven_p = ( haven.subclip((1,54.65)) .reH() .volumex(.5) .audio_fadein(.8) .resize(width=0.4*W) .margin(1, color=3*[255]) .margin(right=40, opacity=0) .set_pos(('right','center')) ) lizzie_p = (lizzie.subclip((1,29.3),(1,34.5)) .set_audio(None) .resize(width=.4*W) .margin(1, color=3*[255]) .margin(left=40, opacity=0) .set_pos(('left','center')) .fadein(1) .fadeout(.5)) nicole_p = (nicole.subclip(36.9,-.1) .crop(y1=50) .resize(width=.4*W) .volumex(2) .audio_fadein(.2) .fadein(.5) .margin(1, color=3*[255]) .margin(left=40, opacity=0) .fadeout(.1) .set_pos(('left','center'))) he_start = second_verse_start + 10.45 d1 = 3.5 # clap clap 1 d2 = 6.9 # clap clap 2 d = he_start+ 10.28 # start_orchestra dstop = d+7.5 # stop_orchestra until_last_chorus = CompositeVideoClip([ until_second_verse, hannah_elless_p.set_start(he_start-.45), marj_p.set_start(he_start+d1), camshie_p.set_start(he_start+d1), thomas_p.set_start(he_start+d1), raRaRileyStraw_p.set_start(he_start+d2), rachel_p.set_start(he_start+d2), violin_guitar_p.set_start(d).set_end(dstop), kira_mackenzie_p.set_start(he_start+d2), flute_p.set_start(d).set_end(dstop), clarinet_p.set_start(d), katie_p.set_start(d), bass_p.set_start(d-T_bass).set_end(dstop), allyPaige_p.set_start(d+1.5).set_end(dstop), richard_p.set_start(d+4.0).set_end(dstop), camryn_p.set_start(d+4.0).set_end(dstop), haven_p.set_start(d+5.75), lizzie_p.set_start(dstop+.5), nicole_p.set_start(d+13.8) ]) #until_last_chorus.to_videofile('test_ulc.mp4',fps=5) import re import os from moviepy.editor import * def chunks(l, n): """ Yield successive n-sized chunks from l. """ for i in range(0, len(l), n): yield l[i:i+n] andrew_foy = VideoFileClip("./instrumental/Andrew Foy.mp4") jenni_saslove = VideoFileClip("./girl_acapella/Jenni Saslove.mp4") brie_monetti = VideoFileClip("./uke_guitar_song/Brie Monetti.mp4") jenna_lynn = VideoFileClip("./uke_guitar_song/Jenna Lynn.mp4") tiffany = VideoFileClip("./uke_guitar_song/Tiffany Cicio.mp4") # We open THIS notebook ! with open('./CupSongsCovers.ipynb','r') as f: lines = f.readlines() files = [re.search("VideoFileClip\((.*)\)", l) for l in lines] files = [f.groups()[0][1:-1] for f in files if f is not None] names = [os.path.splitext(os.path.basename(f))[0] for f in files] print ', '.join(names) D=1.72 txt_end = (TextClip("Original Cup Song written by\n" "Lulu and the Lampshades", fontsize=30, interline=15, bg_color='black', font="Ubuntu-Regular", size=(W,H), color = 'white') .set_pos(('center', 'center')) .set_duration(3) .fadein(1) .fadeout(1) .fx(vfx.freeze_at_start, 1)) txt0 = (TextClip("Youtubers by order\nof appearance:", fontsize=30, interline=15, bg_color='black', font="Ubuntu-Regular", size=(W,H), color = 'white') .set_duration(3) .fadein(1) .fadeout(1) .fx(vfx.freeze_at_start, 1)) txts = [TextClip("\n".join(nn), fontsize=30, font="Ubuntu-Regular", color = 'white', interline=9) .set_pos(('center', 'center')) .fadein(.3) .set_start(D*(i)) .set_duration(D) .fadeout(.3) for i,nn in enumerate(chunks(names,7))] W2 = 2*W/7 end_time=19 andrew_foy_p = (andrew_foy .resize(width=W2) .margin(1, color=3*[255]) .margin(left=10, bottom=10, opacity=0) .set_pos(('left','bottom')) .subclip(23) .volumex(.6) .audio_fadein(1) .audio_fadeout(1)) brie_monetti_p = (brie_monetti .crop(y2=300, x2=-150) .resize(width=W2) .margin(1, color=3*[255]) .margin(right=10, top=10, opacity=0) .set_pos(('right','top')) .subclip(47, 52) .audio_fadein(.1)) jenni_saslove_p = (jenni_saslove .resize(width=W2) .margin(1, color=3*[255]) .margin(left=10, top=10, opacity=0) .set_pos(('left','top')) .subclip(24.5, 27.3) .audio_fadein(.3)) jenna_lynn_p = (jenna_lynn.subclip(30.45, 34.5) .resize(width=W2) .margin(1, color=3*[255]) .margin(right=10, bottom=10, opacity=0) .set_pos(('right','bottom')) .audio_fadein(.1)) tiffany_p = (tiffany.subclip(40.5) .resize(width=W2) .margin(1, color=3*[255]) .margin(left=10, top=10, opacity=0) .set_pos(('left','top')) .audio_fadein(.2) .volumex(.5) .audio_fadein(.5) .audio_fadeout(1)) af_start = 0 bm_start = af_start + 1 js_start = af_start + 5.3 mar_start = af_start + 3 kf_start = af_start + 8.8 tiff_start = af_start + 12.6 jl_start = af_start + 15.85 scott_start = af_start + 23.5 credits = (CompositeVideoClip(txts+[ andrew_foy_p.set_start(af_start), brie_monetti_p.set_start(bm_start), jenni_saslove_p.set_start(js_start), jenna_lynn_p.set_start(kf_start), tiffany_p.set_start(tiff_start) ], size= (W,H)) .set_duration(17+af_start) .fadein(1) .fadeout(1) .audio_fadeout(1) .audio_fadeout(1)) len(names) # made wit moviepy mwm = ( ImageClip('logo_white.png') .resize(width=0.6*W) .on_color(size= [W,H], pos=('center',H/5))) mwm_audio = (AudioFileClip("./cupspiano.wav") .subclip(.2) .audio_fadein(.5) .audio_fadeout(.5)) grenoble = (TextClip("Grenoble, 2014",fontsize=25, font="Amiri-Regular", color='gray') .margin(right=20, bottom=10, opacity=0) .set_pos(('right', 'bottom'))) mwm_grenoble = (CompositeVideoClip([mwm, grenoble]) .set_audio(mwm_audio) .set_duration(mwm_audio.duration) .fadein(1).fadeout(1)) credits_and_end = concatenate([txt_end, txt0, credits, mwm_grenoble]) #credits_and_end.to_videofile('testend.mp4', fps=25) until_end = concatenate([until_last_chorus, credits_and_end]) until_end.to_videofile("Cup_Song_Covers_Mix.mp4", fps=25, bitrate="10000k", audio_bitrate='500k')