Skip to content

Commit 3ad42ba

Browse files
Refactor FFmpeg download and fix watermark bug
1 parent bfcdca9 commit 3ad42ba

File tree

1 file changed

+45
-26
lines changed

1 file changed

+45
-26
lines changed

utils/ffmpeg_install.py

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,55 @@
1+
import zipfile
12
import requests
23
import os
34
import subprocess
45

56

67
def ffmpeg_install_windows():
78
try:
8-
zip = "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip"
9-
r = requests.get(zip)
10-
with open("ffmpeg.zip", "wb") as f:
9+
ffmpeg_url = "https://github.com/GyanD/codexffmpeg/releases/download/6.0/ffmpeg-6.0-full_build.zip"
10+
ffmpeg_zip_filename = "ffmpeg.zip"
11+
ffmpeg_extracted_folder = "ffmpeg"
12+
13+
# Check if ffmpeg.zip already exists
14+
if os.path.exists(ffmpeg_zip_filename):
15+
os.remove(ffmpeg_zip_filename)
16+
17+
# Download FFmpeg
18+
r = requests.get(ffmpeg_url)
19+
with open(ffmpeg_zip_filename, "wb") as f:
1120
f.write(r.content)
12-
import zipfile
1321

14-
with zipfile.ZipFile("ffmpeg.zip", "r") as zip_ref:
22+
# Check if the extracted folder already exists
23+
if os.path.exists(ffmpeg_extracted_folder):
24+
# Remove existing extracted folder and its contents
25+
for root, dirs, files in os.walk(ffmpeg_extracted_folder, topdown=False):
26+
for file in files:
27+
os.remove(os.path.join(root, file))
28+
for dir in dirs:
29+
os.rmdir(os.path.join(root, dir))
30+
os.rmdir(ffmpeg_extracted_folder)
31+
32+
# Extract FFmpeg
33+
with zipfile.ZipFile(ffmpeg_zip_filename, "r") as zip_ref:
1534
zip_ref.extractall()
1635
os.remove("ffmpeg.zip")
17-
os.rename("ffmpeg-master-latest-win64-gpl", "ffmpeg")
18-
# Move the files inside bin to the root
19-
for file in os.listdir("ffmpeg/bin"):
20-
os.rename(f"ffmpeg/bin/{file}", f"./{file}")
21-
os.rmdir("ffmpeg/bin")
22-
for file in os.listdir("ffmpeg/doc"):
23-
os.remove(f"ffmpeg/doc/{file}")
24-
os.rmdir("ffmpeg/doc")
25-
os.remove("ffmpeg/LICENSE.txt")
26-
os.rmdir("ffmpeg/")
2736

28-
print(
29-
"FFmpeg installed successfully! Please restart your computer and then re-run the program."
30-
)
37+
# Rename and move files
38+
os.rename(f"{ffmpeg_extracted_folder}-6.0-full_build", ffmpeg_extracted_folder)
39+
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "bin")):
40+
os.rename(os.path.join(ffmpeg_extracted_folder, "bin", file), os.path.join(".", file))
41+
os.rmdir(os.path.join(ffmpeg_extracted_folder, "bin"))
42+
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "doc")):
43+
os.remove(os.path.join(ffmpeg_extracted_folder, "doc", file))
44+
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "presets")):
45+
os.remove(os.path.join(ffmpeg_extracted_folder, "presets", file))
46+
os.rmdir(os.path.join(ffmpeg_extracted_folder, "presets"))
47+
os.rmdir(os.path.join(ffmpeg_extracted_folder, "doc"))
48+
os.remove(os.path.join(ffmpeg_extracted_folder, "LICENSE"))
49+
os.remove(os.path.join(ffmpeg_extracted_folder, "README.txt"))
50+
os.rmdir(ffmpeg_extracted_folder)
3151

52+
print("FFmpeg installed successfully! Please restart your computer and then re-run the program.")
3253
except Exception as e:
3354
print(
3455
"An error occurred while trying to install FFmpeg. Please try again. Otherwise, please install FFmpeg manually and try again."
@@ -75,16 +96,12 @@ def ffmpeg_install_mac():
7596
def ffmpeg_install():
7697
try:
7798
# Try to run the FFmpeg command
78-
subprocess.run(
79-
["ffmpeg", "-version"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
80-
)
99+
subprocess.run(['ffmpeg', '-version'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
81100
except FileNotFoundError as e:
82101
# Check if there's ffmpeg.exe in the current directory
83102
if os.path.exists("./ffmpeg.exe"):
84-
print(
85-
"FFmpeg is installed on this system! If you are seeing this error for the second time, restart your computer."
86-
)
87-
print("FFmpeg is not installed on this system.")
103+
print('FFmpeg is installed on this system! If you are seeing this error for the second time, restart your computer.')
104+
print('FFmpeg is not installed on this system.')
88105
resp = input(
89106
"We can try to automatically install it for you. Would you like to do that? (y/n): "
90107
)
@@ -97,7 +114,9 @@ def ffmpeg_install():
97114
elif os.name == "mac":
98115
ffmpeg_install_mac()
99116
else:
100-
print("Your OS is not supported. Please install FFmpeg manually and try again.")
117+
print(
118+
"Your OS is not supported. Please install FFmpeg manually and try again."
119+
)
101120
exit()
102121
else:
103122
print("Please install FFmpeg manually and try again.")

0 commit comments

Comments
 (0)