- Publicerad
MovieCreator - Skapa video med AI
- Authors
- Name
- Simon Gustafsson
- @olavsway
Introduktion
MovieCreator är ett spännande projekt som kombinerar AI-teknik med videoredigering för att skapa unikt videoinnehåll. Projektet är utformat för att underlätta skapandet av videor genom att använda AI för att generera text, bild och ljud för att skapa en komplett video.
Funktionalitet
MovieCreator erbjuder en rad funktioner som gör det enkelt att skapa videoinnehåll:
- TTS: Genererade texter konverteras till tal med hjälp av Text-to-Speech-teknik från ElevenLabs.
- API: Bilder hämtas från Unsplash API för att skapa visuellt innehåll.
- AI: OpenAI API används för att generera text och bildbeskrivningar för videon.
Kodexempel
Här är ett exempel på hur MovieCreator bygger ihop text, bild och ljud för att skapa en komplett video:
from moviepy.editor import CompositeVideoClip, ImageClip, AudioFileClip, TextClip, transfx, VideoFileClip
from resource.video_tools import resize_clip_to_fit, adjust_text_to_max_length
from resource.external_audio import create_audio
logo_path = "./logo.png"
logo_clip = ImageClip(logo_path).set_position((50, 50))
logo_clip = logo_clip.resize(width=200)
clips = []
def create_scenes(scenes):
for scene in scenes:
for content in scene["content"]:
audio_filename = create_audio(scene["transcribe"])
audio = AudioFileClip(audio_filename)
if content["type"] == "video":
content_clip = VideoFileClip(content["url"]).set_duration(audio.duration + 1).set_audio(audio)
else:
content_clip = ImageClip(content["url"]).set_duration(audio.duration + 1).set_audio(audio)
resized_clip = resize_clip_to_fit(content_clip, (1080, 1920))
adjusted_text = adjust_text_to_max_length(content["text"], 25)
text_clip = TextClip(adjusted_text, fontsize=70, color='white')
text_clip = text_clip.on_color(size=(text_clip.w + 140, text_clip.h + 40), color=(0,0,0), pos=('center','center'), col_opacity=1)
text_clip = text_clip.set_position(('center', 'bottom')).set_duration(audio.duration + 1)
final_clip = CompositeVideoClip([resized_clip, text_clip, logo_clip.set_duration(content_clip.duration)], size=(1080, 1920))
clips.append(final_clip)
edited_clip = clips[0]
for next_clip in clips[1:]:
transition_clip = next_clip.fx(transfx.slide_in, 1, 'right')
combined_clip = CompositeVideoClip([edited_clip, transition_clip.set_start(edited_clip.duration - 1)])
edited_clip = combined_clip
return edited_clip, clips
Teknikstack
MovieCreator är byggt med en rad moderna teknologier och ramverk:
- Python: Används för att skapa en AI-driven videoredigeringsmotor.
- OpenAI API: Används för att generera text och bildbeskrivningar för videon.
- ElevenLabs API: Används för att konvertera text till tal.
- Unsplash API: Används för att hämta bilder för videon.
Utvecklingsprocess
MovieCreator är resultatet av en omfattande design- och utvecklingsprocess där flera tekniska utmaningar övervanns:
- AI-integration: Integrering av OpenAI API för att generera text och bildbeskrivningar.
- Videoredigering: Utvecklingen av en AI-driven videoredigeringsmotor för att skapa videor automatiskt.