latest_app_test / app.py
Rahulk2197's picture
Upload 3 files
641e943 verified
import streamlit as st
import zipfile
import os
import shutil
from moviepy.editor import VideoFileClip
from live import * # Ensure that `analyze_live_video` is properly imported
# Define paths
zip_file_path = 'output.zip'
output_folder = 'output'
# Function to process video and save output
def process_video(input_file_path, output_folder):
# Ensure the output folder exists
os.makedirs(output_folder, exist_ok=True)
# Load the video file
video = VideoFileClip(input_file_path)
# Example processing: Save each frame as an image (customize as needed)
for i, frame in enumerate(video.iter_frames()):
frame_path = os.path.join(output_folder, f'frame_{i:04d}.png')
# Save the frame as an image (you might need to use a library for this, e.g., PIL)
# Example: imageio.imwrite(frame_path, frame)
# You can add more processing steps here
# Streamlit app
st.title("Video Processing App")
# Upload video file
uploaded_file = st.file_uploader("Upload a video file", type=["mp4", "avi", "mov"])
if uploaded_file is not None:
# Save the uploaded file to a temporary location
temp_file_path = 'temp_video_file.mp4'
with open(temp_file_path, 'wb') as f:
f.write(uploaded_file.read())
# Create a "Predict" button
if st.button("Predict"):
# Process the video and save output
analyze_live_video(temp_file_path, 1, 1, 1, True, print)
# Compress the output folder into a ZIP file
def compress_folder(folder_path, zip_file_path):
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
zipf.write(file_path, os.path.relpath(file_path, folder_path))
compress_folder(output_folder, zip_file_path)
# Read the ZIP file to be downloaded
with open(zip_file_path, 'rb') as file:
zip_data = file.read()
# Create a download button for the ZIP file
st.download_button(
label="Download Processed Video Files as ZIP",
data=zip_data,
file_name="output.zip",
mime="application/zip"
)
# Clean up temporary files
os.remove(temp_file_path)
shutil.rmtree(output_folder)
os.remove(zip_file_path)