【问题标题】:Convert mp3 to wav on the fly using ffmpeg in Python在 Python 中使用 ffmpeg 即时将 mp3 转换为 wav
【发布时间】:2014-04-18 10:50:13
【问题描述】:

我正在尝试使用 ffmpeg 将 Python 中的 mp3 文件即时转换为 wav 文件。

我使用子进程调用它,我怎样才能得到它的输出以即时播放它作为 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...

【问题讨论】:

  • 为什么不直接播放mp3文件呢?您要播放文件并将其保存到磁盘吗?你有接受标准输入的音频播放器吗?
  • 我想直接将它发送到另一个音频播放器(也使用子进程)并且它只支持 wav 文件,我只是发现动态执行它而不是转换所有内容然后播放 wav 文件更方便(s)。我发送 avi 文件的播放器确实支持标准输入。

标签: python linux ffmpeg subprocess


【解决方案1】:

要在没有 shell 的情况下模拟 source arg1 arg2 | sink 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()

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2011-03-04
    • 2019-03-11
    • 2017-07-06
    相关资源
    最近更新 更多