diff --git a/files/helpers/media.py b/files/helpers/media.py index bd3c4aef9..979fc1470 100644 --- a/files/helpers/media.py +++ b/files/helpers/media.py @@ -4,6 +4,7 @@ import time import requests from shutil import copyfile +import ffmpeg import gevent import imagehash from flask import abort, g, has_request_context, request @@ -18,9 +19,6 @@ from files.helpers.settings import get_setting from .config.const import * -def subprocess_run(params): - subprocess.run(params, check=True, timeout=30) - def remove_media_using_link(path): if SITE in path: path = path.split(SITE, 1)[1] @@ -92,7 +90,7 @@ def process_audio(file, v, old=None): new = old + extension try: - subprocess_run(["ffmpeg", "-loglevel", "quiet", "-y", "-i", old, "-map_metadata", "-1", "-c:a", "copy", new]) + ffmpeg.input(old).output(new, loglevel="quiet", map_metadata=-1, acodec="copy").run() except: os.remove(old) if os.path.isfile(new): @@ -115,7 +113,7 @@ def process_audio(file, v, old=None): def convert_to_mp4(old, new): tmp = new.replace('.mp4', '-t.mp4') try: - subprocess_run(["ffmpeg", "-loglevel", "quiet", "-y", "-threads:v", "1", "-i", old, "-map_metadata", "-1", tmp]) + ffmpeg.input(old).output(tmp, loglevel="quiet", map_metadata=-1).run() except: os.remove(old) if os.path.isfile(tmp): @@ -155,7 +153,7 @@ def process_video(file, v): gevent.spawn(convert_to_mp4, old, new) else: try: - subprocess_run(["ffmpeg", "-loglevel", "quiet", "-y", "-i", old, "-map_metadata", "-1", "-c:v", "copy", "-c:a", "copy", new]) + ffmpeg.input(old).output(new, loglevel="quiet", map_metadata=-1, acodec="copy", vcodec="copy").run() except: os.remove(old) if os.path.isfile(new): @@ -212,7 +210,7 @@ def process_image(filename, v, resize=0, trim=False, uploader_id=None, db=None): params.append(filename) try: - subprocess_run(params) + subprocess.run(params, check=True, timeout=30) except: os.remove(filename) if has_request: diff --git a/files/routes/posts.py b/files/routes/posts.py index 697f55913..21f3e216d 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -24,7 +24,6 @@ from files.helpers.sanitize import * from files.helpers.settings import get_setting from files.helpers.slots import * from files.helpers.sorting_and_time import * -from files.helpers.media import subprocess_run from files.routes.routehelpers import execute_shadowban_viewers_and_voters from files.routes.wrappers import * @@ -619,7 +618,7 @@ def submit_post(v, sub=None): p.url = process_video(file, v) name = f'/images/{time.time()}'.replace('.','') + '.webp' try: - subprocess_run(["ffmpeg", "-loglevel", "quiet", "-y", "-i", p.url, "-vf", "scale='iw':-2", "-q:v", "3", "-frames:v", "1", name]) + subprocess.run(["ffmpeg", "-loglevel", "quiet", "-y", "-i", p.url, "-vf", "scale='iw':-2", "-q:v", "3", "-frames:v", "1", name], check=True, timeout=30) except: if os.path.isfile(name): os.remove(name)