| 6 | |
| 7 | |
| 8 | def ffmpeg_install_windows(): |
| 9 | try: |
| 10 | ffmpeg_url = ( |
| 11 | "https://github.com/GyanD/codexffmpeg/releases/download/6.0/ffmpeg-6.0-full_build.zip" |
| 12 | ) |
| 13 | ffmpeg_zip_filename = "ffmpeg.zip" |
| 14 | ffmpeg_extracted_folder = "ffmpeg" |
| 15 | |
| 16 | # Check if ffmpeg.zip already exists |
| 17 | if os.path.exists(ffmpeg_zip_filename): |
| 18 | os.remove(ffmpeg_zip_filename) |
| 19 | |
| 20 | # Download FFmpeg |
| 21 | r = requests.get(ffmpeg_url) |
| 22 | with open(ffmpeg_zip_filename, "wb") as f: |
| 23 | f.write(r.content) |
| 24 | |
| 25 | # Check if the extracted folder already exists |
| 26 | if os.path.exists(ffmpeg_extracted_folder): |
| 27 | # Remove existing extracted folder and its contents |
| 28 | for root, dirs, files in os.walk(ffmpeg_extracted_folder, topdown=False): |
| 29 | for file in files: |
| 30 | os.remove(os.path.join(root, file)) |
| 31 | for directory in dirs: |
| 32 | os.rmdir(os.path.join(root, directory)) |
| 33 | os.rmdir(ffmpeg_extracted_folder) |
| 34 | |
| 35 | # Extract FFmpeg |
| 36 | with zipfile.ZipFile(ffmpeg_zip_filename, "r") as zip_ref: |
| 37 | zip_ref.extractall() |
| 38 | os.remove("ffmpeg.zip") |
| 39 | |
| 40 | # Rename and move files |
| 41 | os.rename(f"{ffmpeg_extracted_folder}-6.0-full_build", ffmpeg_extracted_folder) |
| 42 | for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "bin")): |
| 43 | os.rename( |
| 44 | os.path.join(ffmpeg_extracted_folder, "bin", file), |
| 45 | os.path.join(".", file), |
| 46 | ) |
| 47 | os.rmdir(os.path.join(ffmpeg_extracted_folder, "bin")) |
| 48 | for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "doc")): |
| 49 | os.remove(os.path.join(ffmpeg_extracted_folder, "doc", file)) |
| 50 | for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "presets")): |
| 51 | os.remove(os.path.join(ffmpeg_extracted_folder, "presets", file)) |
| 52 | os.rmdir(os.path.join(ffmpeg_extracted_folder, "presets")) |
| 53 | os.rmdir(os.path.join(ffmpeg_extracted_folder, "doc")) |
| 54 | os.remove(os.path.join(ffmpeg_extracted_folder, "LICENSE")) |
| 55 | os.remove(os.path.join(ffmpeg_extracted_folder, "README.txt")) |
| 56 | os.rmdir(ffmpeg_extracted_folder) |
| 57 | |
| 58 | print( |
| 59 | "FFmpeg installed successfully! Please restart your computer and then re-run the program." |
| 60 | ) |
| 61 | except Exception as e: |
| 62 | print( |
| 63 | "An error occurred while trying to install FFmpeg. Please try again. Otherwise, please install FFmpeg manually and try again." |
| 64 | ) |
| 65 | print(e) |