Package: vidspinner
-- vidspinner --vidspinner is a Python library for easily creating unique versions of videos using filters, text, and audio effects.📥 Installationpip install vidspinner💡 Quick StartfromvidspinnerimportMontageBuilderfromvidspinner.filtersimportFilterfromvidspinner.builders.textimportTextBuilder,TextEffectBuilderfromvidspinner.builders.audioimportAudioBuildermb=MontageBuilder()mb.input='input.mp4'mb.output='output.mp4'mb.clear_meta_tags=True# clear meta tagsmb.add_filter(Filter.RETRO)########### Test text ############tb=TextBuilder()tb.set_params(text='Wow! It is a simple text!')mb.add_filter(tb.build(),start_duration=2,end_duration=5)# add text######################################################### Fisheye effect ################mb.add_filter(Filter.FISHEYE,start_duration=3,end_duration=5.8)###################################################################### Creating logo ###########tb.set_font('comic_sans.ttf')tb.set_params(color='cyan',text='VidSpinner',size=48)teb=TextEffectBuilder()teb.add_effect(effect='SHADOW',x=5,y=5,color='black')teb.add_effect(effect='SHAKE',x=0,y=1850,amplitude=6)# for the shake effect you need to set the position of the text relative to its current coordinates.box_effect='box=1:boxcolor={color}@{transparency}:boxborderw={width}'# custom text effectteb.add_custom_effect(box_effect.format(color='lime',transparency=0.3,width=3))tb.add_effect(teb)mb.add_filter(tb.build())################################################## Audio manipulations ############ab=AudioBuilder()ab.set_pitch(1.5)mb.set_audio(ab)#####################################mb.build()# build result🎥 Example (Quickstart Result):📹 Input:https://github.com/DedInc/vidspinner/assets/41906303/3377f048-c482-4aca-9592-5a22a262c2d0🔮 Output:https://github.com/DedInc/vidspinner/assets/41906303/6da817f3-a398-4763-9885-47aa5d876856🎨 Features16 built-in filters like retro, black & white, psychedelic etc.Add custom text with control over font, size, positionAnimate text with scroll, shake, blink and moreTrim, pitch shift, speed up/slow down audioClear metadata to avoid detection🧰 Built-in Filtersfromvidspinner.filtersimportFilterprint(Filter.get_filters())# to see all filters🎨 Working with FiltersAdd a filter:mb=MontageBuilder()mb.add_filter(Filter.RETRO)# add filtermb.add_filter(Filter.VIGNETTE)# add several filtersAdd a custom filter:mb.add_filter('rotate=PI/4')🖌️ Working with TextAdd text:fromvidspinner.builders.textimportTextBuildertb=TextBuilder()tb.set_params(text='Hello World!',position='CENTER')text=tb.build()mb.add_filter(text)Stylize text and custom position:fromvidspinner.builders.textimportTextBuildertb=TextBuilder()tb.set_font('comic_sans.ttf')tb.set_params(position='COORDS',text='Hello World',color='blue',size=32,x=0,y=0)text=tb.build()mb.add_filter(text)Some text positions:'CENTER' - Center text horizontally and vertically
'CENTER_RIGHT' - Center vertically, align right
'CENTER_LEFT' - Center vertically, align left

'BOTTOM' - Align text to bottom center  
'BOTTOM_LEFT' - Align text to bottom left
'BOTTOM_RIGHT' - Align text to bottom right
'BOTTOM_CENTER' - Align text to bottom center

'TOP' - Align text to top center
'TOP_RIGHT' - Align text to top right
'TOP_LEFT' - Align text to top left 
'TOP_CENTER' - Align text to top center

'COORDS' - Specify x and y coordinatesAdd text with effects:fromvidspinner.builders.textimportTextBuilder,TextEffectBuildertb=TextBuilder()te=TextEffectBuilder()te.add_effect('BLINK',interval=3)te.add_effect('SHADOW',color='gray',x=5,y=5)tb.set_params(text='Hello World!')tb.add_effect(te)text=tb.build()mb.add_filter(text)Some text effects:'BLINK' - Text blinks
'SHADOW' - Text shadow
'SHAKE' - Shake text randomly
'SCROLL_TB' - Scroll text top to bottom 
'SCROLL_LR' - Scroll text left to right
'FADE_IN' - Fade in text over duration
'FADE_OUT' - Fade out text over durationSome common effect parameters:BLINK-intervalSHADOW-color, x, ySHAKE-amplitude, x, yFADE_IN-durationFADE_OUT-durationSCROLL_TB-durationSCROLL_LR-duration🎙️ Working with AudioChange audio track:fromvidspinner.builders.audioimportAudioBuilderab=AudioBuilder()ab.set_audiotrack('track.mp3',start_time=10,end_time=20)mb.set_audio(ab)Change volume:ab.set_volume(0.5)Pitch shift:ab.set_pitch(1.5)🗑️ Clearing MetadataTo clear metadata tags and avoid detection:mb.clear_meta_tags=TrueThis will add the-map_metadata -1flag to ffmpeg to clear metadata tags like title, author, etc.📄 LicenseVidSpinner isMIT licensed.