2016-10-17 4 views
1

ffmpeg (Windows에서)를 사용할 때 pydub이 콘솔 창을 열지 못하게 할 방법이 있습니까? mp3 파일을 wav로 변환하기 위해 ffmpeg를 실행할 때마다 프로세스가 끝났을 때 자동으로 종료되지만 방해가 될 수있는 콘솔 창이 열립니다.pydub이 콘솔 창을 열지 못하도록합니다.

+0

pydub는 하위 프로세스에서 ffmpeg를 실행합니다. 저는 창에 대해 많이 알지 못하지만,이 작은 맛있는 가벼운 음식은 다른 사람들이 대답하는 데 도움이됩니까? – Jiaaro

+0

audio_segment.py에서'creationflags = 0x08000000'을 추가하여 두 개의'p = subprocess.Popen (conversion_command, stdout = subprocess.PIPE, stderr = subprocess.PIPE)'행을 변경했습니다. 이것은 커맨드 윈도우가 이러한 호출로 표시되는 것을 피하는 상당히 일반적인 방법 인 것으로 보이므로 가능한 경우 pydub 자체에 넣는 것이 좋습니다. – dingles

답변

1

내가 사용하는 해결책은 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)` 
0

pydub : 저는 여기에 추가 된 몇 줄이

내가 스크립트에서 pydub를 사용하기 직전에,

그리고 수입 pydub 전에 import subprocess 추가 I 추가 :

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

이것은 여부 AP를 통해 (해당 스크립트에서 모든 서브 프로세스 호출을 알려줍니다 ydub 명령)은 기본적으로 창을 표시하지 않고 wShowWindow라는 다른 플래그를보고 표시할지 여부를 결정합니다. 해당 플래그는 기본적으로 0이므로 창은 표시되지 않습니다.