我正在尝试构建一个脚本,通过Python 3中的ffmpeg转换视频文件。 通过Windows PowerShell,我通过以下命令成功获得了所需的结果:
ffmpeg -i test.webm -c:v libx264 converted.mp4
但是,如果我尝试通过以下代码在python中重复相同的操作:
import subprocess
from os import getcwd
print(getcwd()) # current directory
subprocess.call(["ffmpeg", " -f test.webm -c libx264 converted.mp4"])
我收到以下错误:
Output #0, mp4, to ' -f test.webm -c libx264 converted.mp4':
Output file #0 does not contain any stream
我在文件所在的正确文件夹中。你有更好的方法通过Python在shell中执行命令吗?这应该最好在不同的平台上工作。
答案 0 :(得分:1)
试试这个:
import shlex
cmd = shlex.split("ffmpeg -f test.webm -c libx264 converted.mp4")
subprocess.call(cmd)
你需要将每个参数作为列表中的单个元素传递,这就是argv的工作原理,或者让shell进行拆分:
subprocess.call("ffmpeg -f test.webm -c libx264 converted.mp4", shell=True)