Compare commits

...

2 Commits

Author SHA1 Message Date
PadoTheOriginal
7d3aba2911
Merge 9269931b9b into be3579aaf0 2024-11-09 21:32:05 +05:30
PadoTheOriginal
9269931b9b
Update ffmpeg.py
Problem:
I created a yt-dlp GUI and I use ffmpeg to convert to audio often, recently I used pyinstaller to make a .exe for this GUI because I want to send it to friends who don't have python in their computers, also I don't like the console that appears with python so I just put the configuration to remove the console on pyinstaller, the program works fine, until it has to convert anything with ffmpeg, then because ffmpeg requires a console to open it the program crashes.

Solution:
Added 'creationflags=subprocess.CREATE_NO_WINDOW' so it doesn't try to create a terminal window, this fixes the crashing.

Extra info:
- All of this is on windows, I didn't test on linux or on mac
- This problem only happend to me when I compiled the program to .exe
- I tried this solution and it worked perfectly
2023-07-26 18:24:55 -03:00

View File

@ -252,7 +252,8 @@ class FFmpegPostProcessor(PostProcessor):
cmd.append(encodeFilename(self._ffmpeg_filename_argument(path), True)) cmd.append(encodeFilename(self._ffmpeg_filename_argument(path), True))
self.write_debug(f'{self.basename} command line: {shell_quote(cmd)}') self.write_debug(f'{self.basename} command line: {shell_quote(cmd)}')
stdout, stderr, returncode = Popen.run( stdout, stderr, returncode = Popen.run(
cmd, text=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd, text=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, creationflags=subprocess.CREATE_NO_WINDOW)
if returncode != (0 if self.probe_available else 1): if returncode != (0 if self.probe_available else 1):
return None return None
except OSError: except OSError:
@ -293,7 +294,8 @@ class FFmpegPostProcessor(PostProcessor):
cmd += opts cmd += opts
cmd.append(self._ffmpeg_filename_argument(path)) cmd.append(self._ffmpeg_filename_argument(path))
self.write_debug(f'ffprobe command line: {shell_quote(cmd)}') self.write_debug(f'ffprobe command line: {shell_quote(cmd)}')
stdout, _, _ = Popen.run(cmd, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) stdout, _, _ = Popen.run(cmd, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE, creationflags=subprocess.CREATE_NO_WINDOW)
return json.loads(stdout) return json.loads(stdout)
def get_stream_number(self, path, keys, value): def get_stream_number(self, path, keys, value):
@ -362,7 +364,8 @@ class FFmpegPostProcessor(PostProcessor):
self.write_debug(f'ffmpeg command line: {shell_quote(cmd)}') self.write_debug(f'ffmpeg command line: {shell_quote(cmd)}')
_, stderr, returncode = Popen.run( _, stderr, returncode = Popen.run(
cmd, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) cmd, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE, creationflags=subprocess.CREATE_NO_WINDOW)
if returncode not in variadic(expected_retcodes): if returncode not in variadic(expected_retcodes):
self.write_debug(stderr) self.write_debug(stderr)
raise FFmpegPostProcessorError(stderr.strip().splitlines()[-1]) raise FFmpegPostProcessorError(stderr.strip().splitlines()[-1])