【问题标题】:Raise_child exception outputraise_child 异常输出
【发布时间】:2014-07-25 20:14:15
【问题描述】:

我正在尝试让 pydub 将 2 个音频 wav 文件混合成一个 wav 文件。这是我当前的代码:

from pydub import AudioSegment

sound1 = AudioSegment.from_wav("Test_1.wav")
sound2 = AudioSegment.from_wav("Test_2.wav")

# mix sound2 with sound1, starting at 5000ms into sound1)
output = sound1.overlay(sound2, position=5000)

# save the result
output.export("mixed.wav", format="wav")

这是确切的错误日志:

Traceback (most recent call last):
  File "heterodyning.py", line 10, in <module>
    output.export("mixed.wav", format = "wav")
  File "build/bdist.linux-armv6l/egg/pydub/audio_segment.py", line 234, in export
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

但是,无论出于何种原因,每当我尝试运行它时,它都会引发 raise_child 异常,并告诉我没有这样的文件或目录,指的是我告诉它导出的最后一行。我不知道为什么。谁能告诉我为什么会这样?

【问题讨论】:

    标签: python exception audio wav pydub


    【解决方案1】:

    您当前的工作目录是什么样的?如果那里没有“mixed.wav”文件,那么output.export("mixed.wav", format="wav") 将失败,因为它不知道将叠加的声音放在哪里。您可以通过以下方式在 python 中打开文件:

    mixed_file = open("mixed.wav", "wb")
    

    在导出到文件之前执行此操作。

    你应该得到这样的结果:

    mixed_file = open("mixed.wav", "wb")
    output.export(mixed_file, format="wav")
    

    【讨论】:

    • 我可以确认,目前,我的代码将生成混合的.wav 文件,但它实际上不会将混合音频放入其中。在此处添加您的代码以打开文件不起作用,它给了我完全相同的错误。
    • 好的。在查看了“wave”python 库之后,将其导入docs.python.org/2/library/wave.html 可能会很有用。然后你可以做类似mixed_file = wave.open("mixed.wav", "w")mixed_file.writeframes(output)
    • @PhilipR。您应该将其作为二进制文件打开mixed_file = open("mixed.wav", "wb"),并且您需要将文件传递给导出方法:output.export(mixed_file, format="wav")
    • @PhilipR。我怀疑找不到的文件不是“mixed.wav”。由于错误是从子进程中冒出来的,这可能意味着它正在尝试调用ffmpeg,而 that 是找不到的文件。当您导出 wav 时,应该使用 ffmpeg(实际上甚至不应该进行子进程调用)。不过,所有其他格式确实使用 ffmpeg。
    • @Jiaaro 如果是这样的话,那么我该如何解决呢?我如何让它不使用 ffmpeg?
    猜你喜欢
    • 2016-09-12
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2017-07-06
    • 2012-02-12
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多