apptest / app.py
Rahulk2197's picture
Rename st.py to app.py
ca127e2 verified
raw
history blame contribute delete
No virus
2.55 kB
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)