python - 为什么我可以从终端运行此命令,但当我的 python 从终端为我运行它时却收到错误?

标签 python ffmpeg

我正在尝试编写一个基本上从终端捕获网络摄像头视频的 python 脚本。当我将命令放入字符串并使用 subprocess.call(script, True) 时,我收到错误,但是当我将相同的命令复制/粘贴到终端时,它工作正常。 p>

这是我的 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 ,它就可以正常工作。

最初,视频应该放在 Videos/Webcam/temp 中,但我把它拿出来看看错误是否与我放置视频的位置有关。我正在使用 Ubuntu 18.04.2 LTS(如果这有影响的话)。

最佳答案

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

例如,您可以使用 subprocess.call(['ls'),而不是会出现错误的 subprocess.call('ls -l/my/dir') , '-l', '/my/dir'])

See more on the subprocess module here

关于python - 为什么我可以从终端运行此命令,但当我的 python 从终端为我运行它时却收到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067314/

相关文章:

python - 如何记录到文件和标准输出

Android 使用 JNI 而不使用静态变量

python - ipython 中的选项卡完整字典键

python - if 形式出现异常 : TypeError: unhashable type: 'list' in Python nltk

python - TypeError : You are attempting to use Python control flow in a layer that was not declared to be dynamic. 将 `dynamic=True` 传递给类构造函数

audio - FFmpeg:在没有 filter_complex 的情况下连接视频文件(包含音频)

android - FFMPEG:多个图像帧+1个音频=1个视频

python - 计算 DataFrame 列中标点符号的数量

ffmpeg.js 构建缺少定义的格式

c++ - 从转码示例中使用时缩放过滤器崩溃并出现错误