在Python中使用ffmpeg动态地将mp3转换为wav

在Python中使用ffmpeg动态地将mp3转换为wav,python,linux,ffmpeg,subprocess,Python,Linux,Ffmpeg,Subprocess,我正在尝试使用ffmpeg将Python中的mp3文件动态转换为wav文件 我使用subprocess调用它,如何让它的输出以wav形式动态播放,而不将其保存为文件(或在转换时播放),然后播放 这就是我到目前为止所做的: 我只是以aplay为例 FileLocation = "/home/file.mp3" subprocess.call(["ffmpeg", "-i", FileLocation etc etc "newfail.wav"]) os.system("aplay ... ")

我正在尝试使用ffmpeg将Python中的mp3文件动态转换为wav文件

我使用subprocess调用它,如何让它的输出以wav形式动态播放,而不将其保存为文件(或在转换时播放),然后播放

这就是我到目前为止所做的:

我只是以aplay为例

FileLocation = "/home/file.mp3"

subprocess.call(["ffmpeg", "-i", FileLocation etc etc "newfail.wav"])
os.system("aplay ... ") #play it on the fly here

据我所知,如果我将“-”作为文件名,它会将其输出到stdout,但我不知道如何读取stdout…

来模拟
源arg1 arg2 | sink
没有shell的shell命令:

from subprocess import Popen, PIPE

source = Popen(['source', 'arg1', 'arg2'], stdout=PIPE)
sink = Popen(['sink'], stdin=source.stdout)
source.stdout.close()
source.wait()
sink.wait()

你为什么不直接播放mp3文件呢?是否要播放文件并将其保存到磁盘?你有一个音频播放器可以接受标准输入吗?我想直接把它发送给另一个音频播放器(也使用子进程),它只支持wav文件,我只是觉得它更方便,不需要转换所有内容,然后播放wav文件。我发送avi文件的播放器不支持标准输入。