为什么我可以从终端运行此命令,但是我的python为我从终端运行它却出现错误?

时间:2019-05-09 20:44:45

标签: python ffmpeg

我正在尝试编写一个python脚本,该脚本基本上可以从终端捕获网络摄像头视频。当我将命令放入字符串并使用subprocess.call(script, True)时,会出现错误,但是当我从字面上将同一命令复制/粘贴到终端时,效果很好。

这是我的python:

import subprocess
import os
if (os.path.isdir("Videos/Webcam/temp") is False):
    dirmake = 'mkdir Videos/Webcam/temp'
    subprocess.call(dirmake, True)
cmd = 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm'
subprocess.call(cmd, True)

这是错误

`FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm': 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm'`

如果我只是在终端上运行ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm,就可以正常工作。

本来应该将视频放到“视频/网络摄像头/临时”中,但是我将其取出来查看错误是否与我放置视频的位置有关。如果使用的话,我正在使用Ubuntu 18.04.2 LTS。

1 个答案:

答案 0 :(得分:2)

使用子流程模块时,通常会将您的命令作为字符串列表而不是希望运行的整个命令传递给它。

例如,您将使用subprocess.call('ls -l /my/dir')

,而不是subprocess.call(['ls', '-l', '/my/dir']),这会产生错误。

See more on the subprocess module here