awacke1's picture
Update app.py
d51a9a8
raw
history blame
1.99 kB
# 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)