问题标签 [uvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
793 浏览

webcam - 如何在 Windows Media Foundation 中使用“H.264 UVC 1.5 相机编码器”

我正在尝试在基于 Windows Media Foundation 的 Windows 上编写一些代码,以与一些可以提供 H.264 流的 USB UVC1.5 相机一起使用。现在我可以通过 IMFSourceReader 接口从摄像机中转储 H.264 流。但我不知道如何配置编码器单元的设置。

我刚刚在 Microsoft Docs 中找到一页谈论“H.264 UVC 1.5 相机编码器”。这是链接https://docs.microsoft.com/en-us/windows/win32/medfound/camera-encoder-h264-uvc-1-5。它列出了编码器的一些属性,这正是我所期望的,但它只是一个列表:( 它还提到了 ICodecAPI,我还尝试使用来自 Microsoft 示例代码的以下函数来枚举 H. 264编码器,但仍然没有运气。(它可以枚举我PC中的所有编码器,但没有“H.264 UVC 1.5相机编码器”相关。)

似乎我需要从 IMFMediaSource 获取 ICodecAPI 接口。但不知道该怎么做。

有人可以建议吗?在此先感谢您的帮助。

0 投票
1 回答
437 浏览

python - 在 Tkinter GUI 中跟上相机帧速率

我的目标是在 Tkinter 窗口中显示来自 USB 摄像头的实时馈送。我的问题是我似乎无法足够快地更新 GUI 以跟上相机的帧速率。我正在使用libuvc C 库周围的uvclite python 包装器与相机交互。uvclite 是底层 C 库的轻量级 ctypes 包装器,所以我认为这不是我的瓶颈。这是我的代码:

每帧都是一个完整的 JPEG 图像,存储在bytearray. 该frame_callback函数会调用相机生成的每一帧。我看到“掉帧!” 打印得非常频繁,这意味着我的 GUI 代码没有足够快地将帧从队列中拉出,并且在尝试将新帧放入队列时frame_callback遇到异常。queue.Full我尝试过使用window.after预定函数的延迟(第一个整数参数,以毫秒为单位),但运气不佳。

所以我的问题是:我可以做些什么来优化我的 GUI 代码以更快地从队列中拉出帧?我错过了一些明显的东西吗?

谢谢!

0 投票
2 回答
1538 浏览

android - 是否可以让安卓手机在 Linux 上显示为 USB 视频设备?

基本上,我想将我的 Android 手机插入 Linux 计算机并将其显示为 USB 视频设备,以便可以看到/dev/videoX并打开它以使用手机的摄像头捕获视频/图像。

是否有任何特定的硬件/Android 限制会使这不可行?

实现这一目标的一般步骤是什么(如果可能的话)?

它可以作为 Android 应用程序完成还是需要完全修改 Android / 内核?

0 投票
4 回答
21877 浏览

python - 无法在 Python 中导入 dll 模块

几天来我一直在强调试图在 Windows 上编译 libuvc 的修改版本,现在我终于完成了,我似乎无法在 Python 上加载它。我已经在 Linux 机器上使用相同版本的 Python 编译并成功导入的这个库根本不喜欢 w10。

系统

  • 赢得 10 64 位
  • 蟒蛇3.8 64位
  • libusb 1.022
  • 使用 MinGW64 编译的 libuvc.dll

问题

当尝试

我收到以下错误:

问题是该文件存在,因为它是由 util.find_library 找到的,但是 python 认为它不在它所在的位置,或者输出可能只是默认值。我在这里想念什么?什么可能导致无法加载模块,但无法找到它?对不起,我没有比这更多的输出。

PS:我尝试以不同的方式重新格式化字符串,但消息没有改变。

0 投票
0 回答
72 浏览

android - libusb 在 Android 4.4.2 中同步传输时返回空包

我正在尝试编写一个使用 libuvc 和 libusb 来连接 UVC 相机的本机应用程序。这个应用程序似乎在 Android 5.0 及更高版本上运行良好。在 Android 4.4 上,libusb 传输调用始终获取空数据,因此相机永远不会返回捕获。

有没有人在 Android 上遇到过类似的 libusb 问题?

用法:我正在尝试调整 libuvc(内部调用 libusb)示例代码以在 Android 本机应用程序中工作。您可以在此处找到 libuvc 使用示例。这是如何获取帧的基本示例。

0 投票
2 回答
1063 浏览

android - 无法成功请求usb权限(UVCCamera)

我在做一个uvc摄像头功能,在android10.0系统下可以正常请求权限并使用,但是在android10.0系统下直接收到权限请求失败,并没有弹出权限请求提示弹窗,我还尝试将意图过滤器和元数据添加到清单文件的活动标记中。插入USB时,我直接选择了相关应用并授予权限,但是USB摄像头仍然无法正常工作,代码如下

0 投票
1 回答
1355 浏览

android - UVCCamera 带样品,如何导入到android studio?

我想使用 USB 摄像头 (uvc) 和 Android Studio (Windows)。我遇到了 USB cam 库“libuvccamera”的问题。我想知道如何解决问题或以任何其他方式在我的应用程序中获取 USB cam 的视图。让我更好地解释发生了什么:

我使用 CameraFi 应用程序(https://www.camerafi.com/apps/)测试了 USB 摄像头,并且 USB 摄像头被 Android 系统识别(并且工作正常)。

在 Android Studio 中搜索使用 uvc (usb) cams 后,我发现我可以使用这个库:https ://github.com/saki4510t/UVCCamera 。

下载此库+示例后,我尝试使用 Android Studio 打开(只需打开builg.gradle),代码看起来还可以,但是当我尝试运行usbCameraTest0(或任何其他示例)时,构建失败(我附加了构建输出)

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:libuvccamera:ndkBuild”执行失败。

    启动进程“命令 'null/ndk-build.cmd'”时出现问题

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

    在https://help.gradle.org获得更多帮助

2 秒内构建失败 14 个可操作的任务:7 个已执行,7 个是最新的

=>如果使用 --stacktrace 选项运行,我会得到:

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:libuvccamera:ndkBuild”执行失败。

    启动进程“命令 'null/ndk-build.cmd'”时出现问题

例外是:org.gradle.api.tasks.TaskExecutionException:任务':libuvccamera:ndkBuild'的执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163) 在 org .gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156) 在 org.gradle.api.internal.tasks .execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108) 在 org.gradle.api.internal.tasks.execution。

2 秒内构建失败 16 个可操作的任务:3 个已执行,13 个是最新的

0 投票
0 回答
2848 浏览

ubuntu - 操作系统从 16.04 升级到 20.04 后,在戴尔笔记本电脑上未检测到网络摄像头

我将我的灵感 ubuntu 16.04LTS 笔记本电脑升级到 20.04LTS,之后我无法使用我的网络摄像头。

我检查了bios,它启用了摄像头。所以bios没有任何问题。 在此处输入图像描述

命令 lsusb -t 的结果是:

这些条目中哪些是用于网络摄像头的?如果没有与网络摄像头相关,那么如何以及将什么价值添加到设备列表中?是否有任何技术可以自动检测 ubuntu 中丢失的硬件?

更新:遇到命令发现

0 投票
0 回答
243 浏览

windows - 当使用带有 UVC 相机的媒体基础 Source Reader 时,有时 OnReadSample 永远不会被调用

我首先要说这个问题与另一个问题非常相似- 我希望主要区别在于,我将提供足够的上下文来解决这个问题:)

我正在为专有的 UVC 相机设备编写 C++ 库,该设备利用 ms 媒体基础来抓取帧以通过自定义 C++/CUDA/C# 应用程序进行处理和显示。相机在正常使用过程中偶尔会与设备连接和分离,大约 15% 的时间会发生这种情况:

成功创建 IMFSourceReader 对象后,将对 ReadSample 进行后续异步调用。回调函数首先被调用,“hrStatus”设置为 S_OK,dwStreamFlags 设置为指示的 MF_SOURCE_READERF_STREAMTICK。在此之后,对 ReadSample 函数的任何后续调用都不会引发对已注册 OnReadSample 回调的调用。

下面包括 SourceReader 初始化代码、对 ReadSample 的调用和 OnReadSample 实现的片段。

Source Reader 对象的初始化代码

对 ReadSample 的调用 - 在连续运行的循环中进行

最后是 OnReadSample 的实现(为简洁起见,排除了一些图像处理代码)

我被难住了,并且已经被难住了一段时间。我会假设如果在第一个 ReadSample 调用的 UVC 方面存在一些问题,那么我将能够简单地诊断出这个问题。最初,我有一个 ReadSample 的同步实现,它会遇到以相同方式呈现的问题(第一次调用给了 MF_SOURCE_READERF_STREAMTICK,下一个从未返回)。我想知道是否有其他媒体基础方法来检查媒体源的状态,以便我可以进一步调试?

你们怎么想?我正在运行 Windows 10 Pro 64 位(10.0,内部版本 18363)以供参考。非常感谢任何和所有帮助。谢谢!

0 投票
2 回答
4642 浏览

android - Android 作为 UVC 相机

我被一个相当糟糕的网络摄像头困在家里。我正在考虑升级,但后来让我印象深刻:如今的手机中嵌入了非常好的摄像头。那么为什么不将它用作网络摄像头呢?

但是,当我对此进行进一步研究时,我对可用的应用程序感到非常失望。据我所知,我们的 Android 应用程序大致如下:

  • 将手机摄像头作为网络连接的摄像头。然后,您可以使用本地软件将该提要用作网络摄像头。参见例如IP 网络摄像头。这可能就足够了,但这是一个复杂的设置,并且网络延迟使得这远非理想。

  • Android 应用程序将摄像头馈送发送到自定义主机应用程序,该应用程序进而创建虚拟网络摄像头。参见例如DroidCam。这主要解决了延迟问题,但还是比较复杂,而且要求我们安装特定的第三方应用程序在用户隐私方面很麻烦。特别是因为应用程序是闭源的。

因此,我采用了工程方法,并试图看看是否有可能改善这种情况。据我所知,Android 支持用作自定义 USB附件。查看 USB 视频类文档,让我震惊的是,应该可以创建一个将手机呈现为通用 UVC 网络摄像头的 Android 应用程序,这样我们就不必诉诸上述技巧。

理想情况下,除了调试模式、文件传输等之外,我希望 Android 添加另一个 USB 设备选项(“将 USB 连接用作网络摄像头”)。但这似乎不太可能在短期内发生。

所以,我的问题是:是否已经存在具有上述功能的应用程序?到目前为止,我的搜索没有产生任何结果,但我可能会遗漏一些东西,因为谷歌搜索结果比我预期的要难一些。

或者,我在上面的假设中是否错了,以至于存在一些基本问题,为什么不能使 Android 应用程序以这种方式工作?