FFmpeg / app.py
RandomPersonRR's picture
Update app.py
00cb808 verified
raw
history blame
1.86 kB
import streamlit as st
import subprocess
import os
# Directories for uploads and processing
UPLOAD_FOLDER = 'uploads'
PROCESSED_FOLDER = 'processed'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
os.makedirs(PROCESSED_FOLDER, exist_ok=True)
# Streamlit UI
st.title('FFmpeg Command Executor')
# File upload
uploaded_file = st.file_uploader("Upload a file", type=['mp4', 'mkv', 'avi', 'mov'])
if uploaded_file:
with open(os.path.join(UPLOAD_FOLDER, uploaded_file.name), 'wb') as f:
f.write(uploaded_file.getbuffer())
st.success('File uploaded successfully!')
# FFmpeg command input
ffmpeg_command = st.text_area("Enter FFmpeg command", placeholder="e.g., ffmpeg -i input.mp4 -vf scale=640:480 output.mp4")
if st.button('Run Command'):
if not uploaded_file:
st.error("Please upload a file before running the command.")
elif not ffmpeg_command:
st.error("Please enter an FFmpeg command.")
else:
# Run FFmpeg command
command = ffmpeg_command.replace("input", os.path.join(UPLOAD_FOLDER, uploaded_file.name)).replace("output", os.path.join(PROCESSED_FOLDER, 'output.mp4'))
try:
result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
st.success("Command executed successfully!")
# Display logs
st.subheader('FFmpeg Logs:')
st.code(result.stdout)
# Display video player
video_file = os.path.join(PROCESSED_FOLDER, 'output.mp4')
if os.path.exists(video_file):
st.subheader('Processed Video:')
st.video(video_file)
else:
st.warning("No video file found. Please check the command.")
except subprocess.CalledProcessError as e:
st.error(f"Error executing command: {e}")