使用 Pyinstaller 生成可视化界面程序时,如何阻止 ffmpeg 转换音频时命令窗口弹出?
在使用pyinstaller生成可视化界面程序时,调用ffmpeg转换音频的subprocess.run()可能导致命令窗口弹出。为了解决这个问题,开发者尝试了以下方法:
- 添加creationflags=subprocess.create_no_window参数:
subprocess.run(command, creationflags=subprocess.create_no_window)
- 对于mp3转换,添加startupinfo参数:
startupinfo = subprocess.startupinfo() startupinfo.dwflags |= subprocess.startf_useshowwindow subprocess.run(command, startupinfo=startupinfo, creationflags=subprocess.create_no_window)
然而,这些方法都无法有效屏蔽mp3转换时的命令窗口。这个问题的根源在于wav和mp3转换命令的不同。wav转换命令中使用-y参数来覆盖输出文件,而-y参数会在windows系统中打开命令窗口。
因此,开发者需要在mp3转换命令中也添加-y参数,如下所示:
command = [ "ffmpeg", "-i", file_path, "-loglevel", "quiet", # 屏蔽ffmpeg log "-ar", sample_rate, # 设置采样率为 16kHz "-b:a", bitrate, # 设置比特率为 40kbps "-ac", audio_channel, # 设置音频通道数为 2(立体声) "-c:a", "libmp3lame", # 使用libmp3lame编码器 "-q:a", "9", # 设置质量参数为 9,确保使用恒定比特率 "-filter:a", f"volume=1.5", # 调整音量 "-y", save_path # 覆盖输出文件 ] subprocess.run(command, creationflags=subprocess.CREATE_NO_WINDOW)
添加-y参数后,mp3转换也能够有效屏蔽命令窗口的弹出了。
以上就是使用 Pyinstaller 生成可视化界面程序时,如何阻止 ffmpeg 转换音频时命令窗口弹出?的详细内容,更多请关注其它相关文章!