subprocess.call无法将标准输出发送到ffmpeg

2024-10-05 13:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是python。它调用espeak命令生成.wav音频。然后调用ffmpeg将wav转换为mp3。在

但是这个命令不能通过从espeak向ffmpeg发送stdoutsubprocess.call关于python:

espeak -f myfile --stdout | ffmpeg -i - final.mp3

例如:

^{pr2}$

怎么了?我该怎么办?在


Tags: 代码命令stdoutcall音频myfilemp3ffmpeg
1条回答
网友
1楼 · 发布于 2024-10-05 13:15:45

您编写的管道由shell处理,除非您使用shell=True,否则它将无法工作(如所写)。与其这样做,您应该用Python构建管道,使用subprocess非常简单:

p1 = subprocess.Popen(['espeak', '-f', 'myfile', ' stdout'], stdout=subprocess.PIPE)
p2 = subprocess.Popen(['ffmpeg', '-i', '-', 'final.mp3'], stdin=p1.stdout)
p1.stdout.close()  # pipe is already attached to p2, and unneeded in this process
p2.wait()
p1.wait()

相关问题 更多 >

    热门问题