我一直在尝试传递一个仅在命令行中"concat:file1|file2"为ffmpeg的参数加上双引号的命令。
"concat:file1|file2"
但是我不能用python使它工作subprocess.Popen()。任何人都知道如何将引号传递到subprocess.Popen吗?
subprocess.Popen()
这是代码:
command = "ffmpeg -i "concat:1.ts|2.ts" -vcodec copy -acodec copy temp.mp4" output,error = subprocess.Popen(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
当我这样做时,ffmpeg除了采用concat段的引号之外不会采用其他任何方式。有没有一种方法可以成功地将此行传递给subprocess.Popen命令?
我建议使用列表形式的调用而不是引用的字符串版本:
command = ["ffmpeg", "-i", "concat:1.ts|2.ts", "-vcodec", "copy", "-acodec", "copy", "temp.mp4"] output,error = subprocess.Popen( command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
这可以更准确地表示将要传递到最终过程的确切参数集,并且无需弄乱shell引用。
也就是说,如果您绝对要使用纯字符串版本,只需使用不同的引号(和shell=True):
shell=True
command = 'ffmpeg -i "concat:1.ts|2.ts" -vcodec copy -acodec copy temp.mp4' output,error = subprocess.Popen( command, universal_newlines=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()