FFMpeg-Compressor: Implement multiple FIFO workers
This commit is contained in:
parent
54820279d1
commit
23f7e5ec67
3 changed files with 19 additions and 6 deletions
|
@ -36,5 +36,5 @@ Python utility uses ffmpeg to compress Visual Novel Resources
|
|||
* [x] Recreate whole game directory with compressed files
|
||||
* [x] Cross-platform (Easy Windows usage and binaries, macOS binaries)
|
||||
* [x] Use ffmpeg python bindings instead of cli commands
|
||||
* [ ] Reorganize code
|
||||
* [ ] Multithread
|
||||
* [x] Multithread
|
||||
* [ ] Reorganize code
|
|
@ -4,6 +4,7 @@ ForceCompress = false
|
|||
MimicMode = true
|
||||
HideErrors = true
|
||||
WebpRGBA = true
|
||||
Workers = 16
|
||||
|
||||
[AUDIO]
|
||||
Extension = "opus"
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from modules.configloader import config
|
||||
from modules import compressor
|
||||
from modules import printer
|
||||
from modules import utils
|
||||
|
@ -21,6 +23,11 @@ def get_args():
|
|||
exit()
|
||||
|
||||
|
||||
def compress_worker(folder, file, target_folder, req_folder):
|
||||
if os.path.isfile(f'{folder}/{file}'):
|
||||
compressor.compress_file(folder, file, target_folder, req_folder)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_time = datetime.now()
|
||||
printer.win_ascii_esc()
|
||||
|
@ -38,10 +45,15 @@ if __name__ == "__main__":
|
|||
|
||||
printer.info(f"Compressing \"{folder.replace(req_folder, req_folder.split('/').pop())}\" folder...")
|
||||
target_folder = folder.replace(req_folder, f"{req_folder}_compressed")
|
||||
for file in files:
|
||||
if os.path.isfile(f'{folder}/{file}'):
|
||||
compressor.compress_file(folder, file, target_folder, req_folder)
|
||||
|
||||
with ThreadPoolExecutor(max_workers=config["FFMPEG"]["Workers"]) as executor:
|
||||
futures = [
|
||||
executor.submit(compress_worker, folder, file, target_folder, req_folder)
|
||||
for file in files
|
||||
]
|
||||
for future in as_completed(futures):
|
||||
future.result()
|
||||
|
||||
utils.get_compression_status(req_folder)
|
||||
utils.sys_pause()
|
||||
print(f"Time taken: {datetime.now() - start_time}")
|
||||
print(f"Time taken: {datetime.now() - start_time}")
|
Loading…
Add table
Add a link
Reference in a new issue