cx_freeze-通过创建的程序的GUI运行ffmpeg.exe或ffplay.exe时,打开命令窗口-如何隐藏它?

问题描述

我已经使用cx_freeze为我的python程序tool.box构建了一个MSI。

一切正常-但是,我在setup.py中实现了此代码段:

base = None
if (sys.platform == "win32"):
    base = "Win32GUI"

隐藏通常运行最终cexe_freeze生成的.exe时打开的cmd窗口。

这正常工作,现在启动时,我看不到空白的cmd窗口。

但是-在我的程序中,我有几个按钮分别调用ffplay.exe和ffmpeg.exe-以前,没有该代码段,我可以运行该程序,当我单击这些按钮时,不会显示CMD窗口-现在, ,它可以-并且显示ffplay或ffmpeg的输出。

在main.py中,我具有以下命令:

command_play = [ffplay_path,originalAudio,"-ss",str(actual_start_segment),"-t","10","-nodisp","-autoexit"]

ffmpeg_command = FFmpeg(
            inputs={originalAudio: None},outputs={new_filename: ['-ss','-to',str(actual_end_segment),'-async','1','-strict','-2','-ar','44100','-ab','56k','-ac','-y']}
        )

两者都设置为不显示CMD窗口。

他们似乎只有在我编译时才这样做。关于如何隐藏这些内容的任何建议,以便我的基于GUI的程序在最终用户使用它的功能时都不会出现CMD窗口?

解决方法

最后是一个简单的解决方案,它使用了Python 3.7中的新CREATE_NO_WINDOW标志。

调用ffplay或ffmpeg时的新代码如下:

from subprocess import CREATE_NO_WINDOW

def play_beginning(command_play):

    subprocess.Popen(command_play,stderr=subprocess.DEVNULL,creationflags=CREATE_NO_WINDOW)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...