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中运行命令并没有给我任何错误。
我试图改变参数的顺序,但这给了我同样的错误。
答案 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)