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 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) | |