# 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 interpolate between two frames def interpolate_frames(frame1, frame2, alpha): return cv2.addWeighted(frame1, 1 - alpha, frame2, alpha, 0) # 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 # 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.append(frames) # Placeholder for future functionality st.write("Interpolation will be performed here.") # Compile frames into new video (placeholder) st.write("The new video will be compiled here.") # Assume output_video_path contains the path to the compiled video output_video_path = "output_video.mp4" # Provide download link for the video video_base64 = get_video_base64(output_video_path) st.markdown(f'### Download Output Video 📥') href = f'Click here to download the video' st.markdown(href, unsafe_allow_html=True)