File size: 2,199 Bytes
0a3c439
 
 
 
 
bf69b71
0a3c439
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bf69b71
 
 
 
 
 
13d5e58
 
b4a23b4
 
 
13d5e58
 
b4a23b4
13d5e58
 
 
 
 
 
 
 
0a3c439
13d5e58
0a3c439
 
 
 
 
 
 
 
13d5e58
0a3c439
 
 
 
 
13d5e58
0a3c439
 
13d5e58
 
 
 
0a3c439
bf69b71
13d5e58
bf69b71
13d5e58
bf69b71
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
69
70
71
72
73
74
# Import required libraries
import streamlit as st
import cv2
import numpy as np
import tempfile
import base64

# Streamlit app title
st.title("Video Interpolation App πŸŽ₯")

# Function to read video and return frames
def read_video(video_path):
    cap = cv2.VideoCapture(video_path)
    frames = []
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        frames.append(frame)
    cap.release()
    return frames

# Function to convert video file to base64
def get_video_base64(video_path):
    with open(video_path, "rb") as file:
        video_base64 = base64.b64encode(file.read()).decode()
    return video_base64

# Function to save frames to video
def save_frames_to_video(frames, output_video_path):
    if not frames:
        return

    height, width, _ = frames[0].shape
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(output_video_path, fourcc, 30.0, (width, height))

    for frame in frames:
        out.write(frame)
    out.release()

# Textbox for user to specify output video name
output_video_name = st.text_input("Enter the name for the output video:", "Output_Video.mp4")

# Upload videos
uploaded_files = st.file_uploader("Upload Video Files πŸ“€", type=["mp4"], accept_multiple_files=True)

if uploaded_files:
    video_paths = []
    for file in uploaded_files:
        tfile = tempfile.NamedTemporaryFile(delete=False)
        tfile.write(file.read())
        video_paths.append(tfile.name)
    
    st.write("Uploaded video files: πŸ“‚", video_paths)

    # Read videos and get frames
    all_frames = []
    for path in video_paths:
        frames = read_video(path)
        all_frames.extend(frames)

    # Placeholder for future functionality
    st.write("Interpolation will be performed here. ⏳")

    # Save frames to video
    save_frames_to_video(all_frames, output_video_name)

    # Provide download link for the video
    video_base64 = get_video_base64(output_video_name)
    st.markdown(f'### Download Output Video πŸ“₯')
    href = f'<a href="data:video/mp4;base64,{video_base64}" download="{output_video_name}">Click here to download the video</a>'
    st.markdown(href, unsafe_allow_html=True)