ffmpeg通过python子进程无法找到相机

2023-12-05

这里有一个奇怪的问题,我使用这个命令通过 ffmpeg 捕获我的网络摄像头(通过 Windows 上的 cmd):

ffmpeg -y -t 300 -rtbufsize 1024M -f dshow -i video="Lenovo EasyCamera" -c:v libx264 -preset veryslow -crf 25 Desktop.mkv

一切正常。但是当我通过 python 作为子进程尝试相同的命令时,它失败了。这是Python代码:

from subprocess import Popen
cmd = ['ffmpeg', '-y', '-t', '300', '-rtbufsize', '1024M', '-f', 'dshow', '-i', 'video="Lenovo EasyCamera"', '-c:v', 'libx264', '-preset', 'veryslow', '-crf', '25', 'Desktop.mkv']
p = Popen(cmd)

输出以下错误并冻结:

[dshow @ 00000000023a2cc0] Could not find video device with name ["Lenovo EasyCamera"] among source devices of type video.
video="Lenovo EasyCamera": I/O error

谁能弄清楚这一点并告诉我我做错了什么?或者它是 python 或子进程模块中的一些已知错误(使用 python 3.6.1,但如果它能帮助我解决这个问题,则不附加到特定版本)?

提前致谢!

P.S.如果相关的话,这个问题是这个问题的后续问题:如何在 Windows 中使用 ffmpeg 抓取笔记本电脑网络摄像头视频


问题是,在命令行中,video="Lenovo EasyCamera"使用引号来确保空格不会成为另一个参数。

您可以通过测试 python 文件看到这一点:

import sys
print(sys.argv[1:])
> python print_argv.py video="Lenovo EasyCamera"
['video=Lenovo EasyCamera']
> python print_argv.py "video=Lenovo EasyCamera"
['video=Lenovo EasyCamera']
> python
>>> from subprocess import Popen
>>> cmd = ['python', 'print_argv.py', 'video="Lenovo EasyCamera"']
>>> p = Popen(cmd)
['video="Lenovo EasyCamera"']

ffmpeg 认为您正在寻找一个名为"Lenovo EasyCamera"代替Lenovo EasyCamera

因此,您需要更改命令,使其不包含在引号中,如下所示Popen不会将其拆分为空格。

from subprocess import Popen
cmd = [..., '-i', 'video=Lenovo EasyCamera', ...]
p = Popen(cmd)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg通过python子进程无法找到相机 的相关文章

随机推荐

  • 这是批处理文件注入吗?

    C gt batinjection OFF DEL c c batinjection bat 的内容为ECHO 我听说过 SQL 注入 虽然我从未真正做过 但这就是注入吗 有不同类型的注射吗 这是其中之一吗 或者还有另一个技术术语吗 或者更
  • 如何覆盖 AWS-SDK-CPP 中的端点以连接到 localhost:9000 处的 minio 服务器

    我尝试过类似的东西 Aws Client ClientConfiguration config config endpointOverride Aws String localhost 9000 这是行不通的 看来AWS SDK CPP默认
  • Pyspark 按另一个数据帧的列过滤数据帧

    不知道为什么我在这方面遇到困难 考虑到在 R 或 pandas 中相当容易做到 它看起来很简单 我想避免使用 pandas 因为我正在处理大量数据 而且我相信toPandas 将所有数据加载到 pyspark 中的驱动程序内存中 我有 2
  • 使用 Jquery 在导航菜单中突出显示父链接

    我使用以下 Jquery 在导航中突出显示当前页面的链接 Add Active Class To Current Link var url window location get current URL nav a href url add
  • 如何在Python中将浮点数格式化为固定宽度

    如何将浮点数格式化为固定宽度并满足以下要求 如果 n 添加尾随小数零以填充固定宽度 截断超过固定宽度的小数位 对齐所有小数点 例如 formatter something like 06 numbers 23 23 0 123334987
  • Apex 5:动态操作设置页面项值

    使用新的 apex 5 版本时 我遇到以下问题 无法通过plsql获取页面项的值 nv P2 TO P2 FROM lt lt lt DOESN T WORK I Yes P FROM exist and verified nv P2 TO
  • SPSS 按行分组并将字符串连接成一个变量

    我试图导出 SPSS 元数据使用 SPSS 语法转换为自定义格式 具有值标签的数据集包含一个或多个变量标签 但是 现在我想将每个变量的值标签连接成一个字符串 例如对于变量SEX将行组合或分组F Female and M Male转化为一个变
  • 在 R 中的 ggplot2 地图上叠加栅格图层?

    我正在尝试将栅格图层叠加到 ggplot 中的地图上 栅格图层包含卫星标签中每个时间点的似然面 我还想在栅格图层上设置累积概率 95 75 50 我已经弄清楚如何在 ggplot 地图上显示栅格图层 但坐标未彼此对齐 我尝试使每个都有相同的
  • 如何在 Netbeans 中使用 -g 选项进行编译?

    调试时 我收到一条有关异常的警告消息 variable info not available compiled without g 如何在 netbeans 中设置使用 g 进行编译 thanks 据我所知你的own代码是用调试信息编译的
  • MVC3 EF 工作单元 + 通用存储库 + Ninject

    我是 MVC3 的新手 一直在关注 asp net 网站上的精彩教程 然而 我不太清楚如何将工作单元和通用存储库模式与 Ninject 结合使用 我使用本教程作为起点 http www asp net mvc tutorials getti
  • 使用设备策略控制器在后台升级应用程序

    我有一个正在运行的 DPC 应用程序 它是设备所有者 我已在两台不同的 Android 6 0 1 设备上尝试过此操作 以排除任何设备 制造商问题 I used adb shell dpm set device owner com exam
  • VB.NET 中默认启用选项 Strict

    每当我创建一个新的 VB NET 程序时 我必须进入该项目的属性并将 Option strict 设置为打开 我可以这样做一次 这样每次创建新项目时它都是默认的吗 在 Visual Studio 中 转到菜单Tools gt Options
  • 训练后,TensorFlow 始终会收敛到所有项目的相同输出

    这是我正在使用的代码片段 import tensorflow as tf import numpy as np from PIL import Image from os import listdir nodes l1 500 nodes
  • Log4j2 覆盖过去一天的日志文件

    我正在使用 Log4j2 版本 2 3 log4j2 xml 如下所示
  • 使第二行填补上面的空白

    一个简单的 html css 问题 请看这个example 我希望第二行中的块能够填补它们上方的空白 除了使用 JavaScript 之外还有什么办法吗 block float left width 200px height 200px b
  • Lasagne 与 Theano 可能版本不匹配(Windows)

    所以我终于设法让 theano 启动并在 GPU 上运行this指导 测试代码运行良好 告诉我它使用了 GPU 耶 然后我想尝试一下并遵循this数字识别 CNN 训练指南 问题是 我从烤宽面条调用 theano 的方式中收到错误 我猜这里
  • 有没有办法进行内联多值比较?

    我什至觉得问这个问题很愚蠢 因为这看起来很微不足道 但我的大脑却让我失望了 如果我有以下内容 let a b c 1 1 1 有没有一种优雅的方法来确定 a b 和 c 是否都具有相同的值 就像是 let result a b c 这会失败
  • python中如何检查两个字符串是否有交集?

    例如 a abcdefg b krtol 它们没有交集 c hflsfjg 则a和c有交集 检查这个最简单的方法是什么 只需要一个 True 或 False 结果 def hasIntersection a b return not set
  • 使用powershell登录后如何从网站获取表数据?

    我的公司希望我从他们的内部网站获取数据 对其进行组织 然后将其发送到数据库 数据显示在您在站点内导航到的表格上 我想将这些字段提取到文件或内存中以进行进一步处理 到目前为止 我可以通过获取提交登录按钮的 ID 并传递我的用户名 密码来在 p
  • ffmpeg通过python子进程无法找到相机

    这里有一个奇怪的问题 我使用这个命令通过 ffmpeg 捕获我的网络摄像头 通过 Windows 上的 cmd ffmpeg y t 300 rtbufsize 1024M f dshow i video Lenovo EasyCamera