mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-11-04 14:16:57 +00:00
add autodownloader for missing ffmpeg binaries
This commit is contained in:
parent
aef624bd5b
commit
28ea76b0d1
28
wgp.py
28
wgp.py
@ -32,6 +32,9 @@ import zipfile
|
|||||||
import tempfile
|
import tempfile
|
||||||
import atexit
|
import atexit
|
||||||
import shutil
|
import shutil
|
||||||
|
import urllib.request
|
||||||
|
from tqdm import tqdm
|
||||||
|
import requests
|
||||||
global_queue_ref = []
|
global_queue_ref = []
|
||||||
AUTOSAVE_FILENAME = "queue.zip"
|
AUTOSAVE_FILENAME = "queue.zip"
|
||||||
PROMPT_VARS_MAX = 10
|
PROMPT_VARS_MAX = 10
|
||||||
@ -48,6 +51,30 @@ task_id = 0
|
|||||||
# progress_tracker = {}
|
# progress_tracker = {}
|
||||||
# tracker_lock = threading.Lock()
|
# tracker_lock = threading.Lock()
|
||||||
|
|
||||||
|
def download_ffmpeg():
|
||||||
|
if os.name != 'nt': return
|
||||||
|
exes = ['ffmpeg.exe', 'ffprobe.exe', 'ffplay.exe']
|
||||||
|
if all(os.path.exists(e) for e in exes): return
|
||||||
|
api_url = 'https://api.github.com/repos/GyanD/codexffmpeg/releases/latest'
|
||||||
|
r = requests.get(api_url, headers={'Accept': 'application/vnd.github+json'})
|
||||||
|
assets = r.json().get('assets', [])
|
||||||
|
zip_asset = next((a for a in assets if 'essentials_build.zip' in a['name']), None)
|
||||||
|
if not zip_asset: return
|
||||||
|
zip_url = zip_asset['browser_download_url']
|
||||||
|
zip_name = zip_asset['name']
|
||||||
|
with requests.get(zip_url, stream=True) as resp:
|
||||||
|
total = int(resp.headers.get('Content-Length', 0))
|
||||||
|
with open(zip_name, 'wb') as f, tqdm(total=total, unit='B', unit_scale=True) as pbar:
|
||||||
|
for chunk in resp.iter_content(chunk_size=8192):
|
||||||
|
f.write(chunk)
|
||||||
|
pbar.update(len(chunk))
|
||||||
|
with zipfile.ZipFile(zip_name) as z:
|
||||||
|
for f in z.namelist():
|
||||||
|
if f.endswith(tuple(exes)) and '/bin/' in f:
|
||||||
|
z.extract(f)
|
||||||
|
os.rename(f, os.path.basename(f))
|
||||||
|
os.remove(zip_name)
|
||||||
|
|
||||||
def format_time(seconds):
|
def format_time(seconds):
|
||||||
if seconds < 60:
|
if seconds < 60:
|
||||||
return f"{seconds:.1f}s"
|
return f"{seconds:.1f}s"
|
||||||
@ -4601,6 +4628,7 @@ def create_demo():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
atexit.register(autosave_queue)
|
atexit.register(autosave_queue)
|
||||||
|
download_ffmpeg()
|
||||||
# threading.Thread(target=runner, daemon=True).start()
|
# threading.Thread(target=runner, daemon=True).start()
|
||||||
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False"
|
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False"
|
||||||
server_port = int(args.server_port)
|
server_port = int(args.server_port)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user