使用ffmpeg在python -codec复制错误中剪切mp3

时间:2016-11-02 09:50:56

标签: python python-2.7 ffmpeg subprocess

def cut_file(file, start_time, end_time):
    """ Cut the mp3 file with start and end time. """
    output = file[:-4] + "_cut.mp3"
    try:
        os.remove(output)
    except Exception:
        pass
    p=Popen(["ffmpeg", "-i", file, "-c:a copy -ss", start_time, "-to", end_time, output], stdout=PIPE)
    p.communicate()
    os.remove(file)
    os.rename(output,file)
    return file

使用此功能剪切mp3文件时,我从ffmpeg收到错误。错误是:

  

未知编码器' 0:07'

为什么在使用Python时没有ffmpeg识别复制命令?在shell中运行命令并没有给我任何错误。

我试图改变参数的顺序,但这给了我同样的错误。

I got the code out of the official documentation.

1 个答案:

答案 0 :(得分:2)

由于你传递了所有参数list-style(这是一种很好的做法),你需要在空格中分割所有参数,否则Popen将引用 - 保护那些含有空格的东西,以尊重你传递的东西。

此参数"-c:a copy -ss"被解释为一个参数,这可能解释了ffmpeg为什么要将您的开始时间作为编码器读取。

真正发给系统调用的是:

ffmpeg -i file "-c:a copy -ss" start_time -to end_time output

改为:

p=Popen(["ffmpeg", "-i", file, "-c:a","copy","-ss", start_time, "-to", end_time, output], stdout=PIPE)