File size: 2,506 Bytes
d113a04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import streamlit as st
import os
import requests
from gtts import gTTS
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip, AudioFileClip

def download_video(url, filename):
    """
    Downloads a video from the specified URL and saves it as the given filename.
    """
    response = requests.get(url, stream=True)
    if response.status_code == 200:
        with open(filename, 'wb') as file:
            for chunk in response.iter_content(chunk_size=1024):
                if chunk:
                    file.write(chunk)
        print(f"Video downloaded successfully as {filename}")
    else:
        print("Failed to download video.")

def generate_video(text, background_video, output_video):
    # Generate speech from text
    tts = gTTS(text, lang='en')
    audio_path = "output_audio.mp3"
    tts.save(audio_path)
    
    # Load video and audio
    video = VideoFileClip(background_video)
    audio = AudioFileClip(audio_path)
    
    # Set video duration to match audio
    video = video.subclip(0, min(video.duration, audio.duration))
    video = video.set_audio(audio)
    
    # Create text overlay
    text_clip = TextClip(text, fontsize=50, color='white', font='Arial-Bold', bg_color='black')
    text_clip = text_clip.set_duration(video.duration).set_position(('center', 'bottom'))
    
    # Merge text overlay with video
    final_clip = CompositeVideoClip([video, text_clip])
    final_clip.write_videofile(output_video, codec='libx264', fps=24)
    
    # Clean up temporary audio file
    os.remove(audio_path)

# Streamlit UI
st.title("AI Video Creator with Subway Surfers Gameplay")
text_input = st.text_area("Enter text for the video")
background_video = "subway_surfers.mp4"  # Local filename for the background video
output_video = "generated_video.mp4"

# URL of the Subway Surfers gameplay video
video_url = 'https://archive.org/download/rpreplay-final-1680875953/rpreplay-final-1680875953.mp4'

# Download the background video if it doesn't exist
if not os.path.exists(background_video):
    st.write("Downloading background video...")
    download_video(video_url, background_video)

if st.button("Generate Video"):
    if text_input:
        generate_video(text_input, background_video, output_video)
        st.video(output_video)
        with open(output_video, "rb") as file:
            st.download_button(label="Download Video", data=file, file_name="ai_generated_video.mp4", mime="video/mp4")
    else:
        st.error("Please enter some text.")