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