запретить pydub открывать окно консоли

Есть ли способ запретить Pydub открывать окно консоли при использовании ffmpeg (в Windows)? Каждый раз, когда он запускает ffmpeg для преобразования mp3-файла в формат wav, он на короткое время открывает окно консоли, которое автоматически закрывается, когда процесс завершается, но может вызывать беспокойство.

windows,ffmpeg,pydub,

1

Ответов: 2


Решение, которое я использую, состоит в том, чтобы перегрузить from_fileфункцию. Я просто изменил subprocessзвонок, добавив опцию 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)`

Я делаю следующее в любом скрипте, который использует pydub:

Добавить import subprocessперед импортом pydub

Затем, перед тем, как я использую pydub в скрипте, я добавляю:

if subprocess.mswindows: subprocess.STARTUPINFO.dwFlags |= subprocess.STARTF_USESHOWWINDOW

Это говорит любому вызову подпроцесса из этого скрипта (будь то с помощью инструкции pydub) не отображать окно по умолчанию, а искать другой флаг с именем wShowWindow, чтобы решить, отображать ли его. Поскольку этот флаг по умолчанию равен 0, окно не отображается.

окна, FFmpeg, pydub,