Spaces:
Runtime error
Runtime error
# 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'<a href="data:video/mp4;base64,{video_base64}" download="output_video.mp4">Click here to download the video</a>' | |
st.markdown(href, unsafe_allow_html=True) | |