Есть ли способ предотвратить pydub открыть окно консоли при использовании ffmpeg (в Windows)? Каждый раз, когда он запускает ffmpeg для преобразования mp3-файла в wav, он на короткое время открывает консольное окно, которое автоматически отключается, когда процесс завершен, но может быть нарушен.предотвратить pydub от открытия окна консоли
1
A
ответ
1
Решение, которое я использую, - это перегрузить функцию from_file
. Я только что изменил subprocess
call, добавив опцию startupinfo
. Вот несколько строк, которые я добавил:
import platform
systeme = platform.system()
if systeme == 'Windows':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
p = subprocess.Popen(conversion_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo)
else:
p = subprocess.Popen(conversion_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)`
0
я следующий в любой скрипт, который использует pydub:
Добавить import subprocess
перед импортом pydub
Тогда, прежде чем я использовать pydub в сценарии I добавить:
if subprocess.mswindows: subprocess.STARTUPINFO.dwFlags |= subprocess.STARTF_USESHOWWINDOW
Это говорит о каком-либо подпроцессе вызов из этого сценария (или не через ар ydub), чтобы не отображать окно по умолчанию, но посмотреть на другой флаг wShowWindow, чтобы решить, показывать ли его. Поскольку по умолчанию этот флаг равен 0, окно не отображается.
pydub запускает ffmpeg в подпроцессе - я мало что знаю о окнах, но, может быть, этот маленький лакомый кусочек поможет другим ответить? – Jiaaro
В audio_segment.py я изменил две строки 'p = subprocess.Popen (conversion_command, stdout = subprocess.PIPE, stderr = subprocess.PIPE)', добавив 'creationflags = 0x08000000'. Кажется, это довольно распространенный способ избежать появления окон команд с этими вызовами, так что, возможно, стоит поместить его в pydub, если это возможно? – dingles