make .exe文件后出现“ subprocess.Popen”问题

时间:2020-02-01 06:13:51

标签: python-3.x ffmpeg mp3 mp4

im尝试使用ffmpeg将mp3转换为mp4(命令行) 一切正常,程序正常运行。 我有一个进度条,可以通过读取ffmpeg命令行输出来通过此功能进行处理

cls_wnd.pbar_step(line.lower())

但是在使用pyinstaller程序制作(单个).exe文件后,该文件未运行且未进行任何转换

        def _cli(self ,cls_wnd ,cmd):
            errors = False
            cmd_output=""

            line=''
            try:
                    p = subprocess.Popen(cmd ,stdout=subprocess.PIPE ,
                                              stderr=subprocess.STDOUT ,
                                              universal_newlines=True ,
                                              shell=False ,
                                              creationflags = subprocess.CREATE_NO_WINDOW)

                    for line in p.stdout:
                            if cls_wnd.bt02.cget('text').lower()!="cancel":
                                    p.kill()
                                    return cmd_output, True ,'cancel'
                            cmd_output+=line
                            if line.lower().find('duration:')>-1 or line.lower().find('frame=')<1:
                                    cls_wnd.pbar_step(line.lower())
                            cls_wnd.root.update()

                    stdoutdata, stderrdata = p.communicate()
                    if p.wait() != 0:
                            p.kill()
                            return cmd_output, True ,line
                    p.kill()
                    return cmd_output, errors ,' '
            except OSError as e:
                    p.kill()
                    return cmd_output,True,' exit from except '
            return '',True,'exit from _cli end'

cmd是这样的

cmd='ffmpeg -y -loop 1 -i 1.jpg -i 1.mp3 -c:a copy -c:v libx264 -shortest 1.mp4'

使用此命令制作.exe文件

pyinstaller -w --onefile  mp3tomp4.py --onefile

如果我不使用'-w',一切都很好..但是显示了丑陋的黑色cmd-windows,我无法关闭或隐藏它

0 个答案:

没有答案