由于某种原因,我有一个子进程命令行,它没有在其下面运行子进程命令行并执行应有的处理。
import subprocess
import os
os.chdir('/home/linux/Trial/')
a = open('Attempts.txt', 'r')
b = a.readlines()
a.close()
for c in range(0, len(b)-1):
words = list(b[c].split(" "))
d = len(words)
e = words[d-1]
f = b[c].replace(e, 'Hiccup' + str(c) + '.mp4')
words[d-1] = 'Hiccup' + str(c) + '.mp4'
print(f)
command = 'ffmpeg', '-i', words[2], '-ss', words[4], '-to', words[6], '-c:v copy -a copy', words[11]
print(command)
subprocess.run(['ffmpeg', '-i', words[2], '-ss', words[4], '-to', words[6], '-c:v copy -a copy', words[11]])
当我运行以下代码时,我得到以下输出:
ffmpeg -i test.mp4 -ss 00:00:00 -to 00:02:34 -c:v copy -a copy Hiccup0.mp4
('ffmpeg', '-i', 'test.mp4', '-ss', '00:00:00', '-to', '00:02:34', '-c:v copy -a copy', 'Hiccup0.mp4')
我什么也没得到。当我检查没有创建名为 Hiccup0 的新文件时。我已经安装并更新了 ffmpeg-python(今天早上确定了)。
什么给予。我认为这应该有效,但事实并非如此。
我没有用
ffmpeg
进行测试,但我很确定 subprocess.run()
会偶然发现双参数 '-c:v copy -a copy'
。这些被转义,因此它们成为被调用进程的one参数。
将以下最小示例与几乎相同的
echo
命令调用进行比较:
subprocess.run(['echo', '-n', '"hello world"'])
# output: "hello world"<no newline>
subprocess.run(['echo', '-n "hello world"'])
# output: -n "hello world"<newline>