import streamlit as st import os import subprocess from PIL import Image from io import BytesIO # Function to run the provided script and return the path of the generated video def run_script(image_path, video_path): output_video_path = "/content/roop/swapped.mp4" script = """ cd /content/roop !git clone https://github.com/s0md3v/roop.git %cd roop !wget https://huggingface.co/ezioruan/inswapper_128.onnx/resolve/main/inswapper_128.onnx -O inswapper_128.onnx !mkdir models !mv inswapper_128.onnx ./models !python run.py --target {} --output-video-quality 80 --source {} -o {} --execution-provider cuda --frame-processor face_swapper face_enhancer """.format(video_path, image_path, output_video_path) subprocess.run(script, shell=True, cwd="/content") # Return the path of the generated video return output_video_path # Streamlit app def main(): st.title("Face Swapper App") # File upload st.sidebar.header("Upload Files") image_file = st.sidebar.file_uploader("Upload Image", type=["jpg", "png", "jpeg"]) video_file = st.sidebar.file_uploader("Upload Video", type=["mp4"]) if st.sidebar.button("Swap Faces"): if image_file is not None and video_file is not None: # Save uploaded files image_path = image_file video_path = video_file with open(image_path, "wb") as f: f.write(image_file.read()) with open(video_path, "wb") as f: f.write(video_file.read()) # Run the script and get the path of the generated video generated_video_path = run_script(image_path, video_path) # Display the swapped video video_bytes = open(generated_video_path, "rb").read() st.video(video_bytes) if __name__ == "__main__": main()