问题标签 [virtual-webcam]

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 投票
1 回答
135 浏览

node.js - Windows 10 上的 node-virtualcam npm 模块无法正常工作

我想尝试https://www.npmjs.com/package/node-virtualcam上提供的node-virtualcam 我在 Windows 10、64 位

所以我按照以下步骤尝试。

  1. npm install --global --production windows-build-tools --vs2015用管理员运行cmd
  2. git clone https://github.com/letmaik/node-virtualcam
  3. cd node-virtualcam
  4. npm install
  5. 下载https://github.com/Fenrirthviti/obs-virtual-cam/releases/download/2.0.5/OBS-Virtualcam-2.0.5-Windows.zip
  6. 解压缩后我运行regsvr32 /n /i:1 ".\OBS-Virtualcam-2.0.5-Windows\bin\32bit\obs-virtualsource.dll"
  7. 我在 cmd 中看到安装成功的消息
  8. node samples\sample.js
  9. 在 cmd 上看到消息“virtual cam output started (1280x720 @ 30fps)”

但我没有在视频设置和 VLC 捕获设备中看到谷歌会议上的虚拟网络摄像头。如何检查虚拟网络摄像头和此模块是否正常工作?

0 投票
0 回答
77 浏览

python - 如何在python中将应用程序窗口编程到网络摄像头

我想制作一个程序或驱动程序,让 Discord、Skype 和 Zoom 等程序可以识别为网络摄像头。我正在使用带有 IP 摄像头的手机在我的电脑上显示一个框架。只是我似乎没有办法让其他程序看到该窗口是网络摄像头。我知道这是可能的,因为有一些程序,如 droidcam 或 manycam 可以做到这一点,但如果有可能,我想自己做。

我获取 IP 网络摄像头的代码:

0 投票
0 回答
108 浏览

c++ - Directshow 虚拟相机中的模糊桌面捕获输出

我正在尝试创建 Directshow virtaul 相机来捕获桌面。
为了创建虚拟相机,我使用了现有的https://github.com/roman380/tmhare.mvps.org-vcam
为了添加桌面捕获而不是随机数据,我从Microsofts Push Source Filters Sample获得了帮助

桌面捕获推送源过滤器的确切源代码位于
https://github.com/roman380/Windows-classic-samples/blob/master/Samples/Win7Samples/multimedia/directshow/filters/pushsource/PushSourceDesktop.cpp

我正在初始化媒体类型的输出引脚构造函数是

HRESULT GetMediaType(int iPosition, CMediaType *pmt);

我在 google meet 上试过这个虚拟相机,它工作正常,它显示我的桌面,但视频质量很差

在此处输入图像描述

这个模糊视频的原因是什么,我该如何解决这个问题?

0 投票
1 回答
115 浏览

c++ - 如何调试 DirectShow 推送源过滤器?

我尝试了https://github.com/roman380/tmhare.mvps.org-vcam
上提供的基于 DirectShow 的示例虚拟相机之一, 我能够编译和构建并且它在浏览器(Chrome 和 Edge)中工作正常。

但如果是 Zoom 和 Team 等桌面应用程序,虚拟摄像头会被识别但不显示任何帧。选择此虚拟相机时,仅黑屏可见,而不是预期的输出。

在此处输入图像描述

我在阅读调试 DirectShow 过滤器如何调试我在类DbgLog()的构造函数中 添加的 c++ DirectShow 过滤器后尝试调试output pin

LogToFile并在字段中 设置文件路径Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll

在此处输入图像描述

但我没有看到任何日志字符串vcam-log.txt我缺少什么或如何在该文件中获取日志字符串?

0 投票
1 回答
373 浏览

c++ - 使用基于 DirectShow 的虚拟相机和 Electron 框架来渲染内容
元素

我正在尝试使用Electron框架构建桌面应用程序,该框架可以将特定<div>元素的内容输出到基于DirectShow的虚拟相机。

在著名的Viveks 虚拟相机Sample Push Source Filter的帮助下,我能够创建在虚拟相机中渲染桌面的虚拟相机。

现在我想用这个带有电子应用程序的虚拟相机来输出<div>. 我无法弄清楚应该采取什么方法来实现这一目标?我想我必须开发 DirectShow Capture Filter 它将与我不确定的虚拟相机交互。

<div>将内容渲染到虚拟相机的方法应该是什么?

0 投票
1 回答
62 浏览

c++ - 数据如何通过 Windows 上的 OBS-Studio 虚拟相机中的引脚跨过滤器移动?

我喜欢OBS-Studio的虚拟相机功能。

我试图了解它的工作原理,但无法正确理解。我只知道它是使用DirectShow构建的。项目包含 OutputFilterOutputPinCaptureFilterCapturePin

当我们启用虚拟相机时,数据是如何通过这些过滤器和引脚移动的?

0 投票
0 回答
270 浏览

gstreamer - 使用 OBS 虚拟相机和 GStreamer (Win10)

我在 Windows 上有一个基于 GStreamer 的小型应用程序,可以记录网络摄像头。不幸的是,它没有看到 OBS 虚拟相机。有什么方法可以从 GStreamer 访问它吗?

当我这样做时gst-device-monitor-1.0.exe Video,它会显示我的常规网络摄像头和另一个虚拟摄像头应用程序,但不会显示 OBS。

我在 Windows 10 上运行 OBS 26.1.1(32 位)。GStreamer 也是 32 位的。

0 投票
0 回答
80 浏览

android - IP网络摄像头替代品

我想在本地从手机的摄像头 4k 直播视频。我已经尝试了很多“所谓的”IP 网络摄像头应用程序,但它们都不够好用。我有三星 Galaxy A71 手机,它有 4 个后置摄像头,主要是 64mp。我试过“Iruin 网络摄像头”、“Droidcam”、“IP 网络摄像头”、“Droidcam OBS”,还有 2 到 3 个。

它们要么都被限制为 1080p,比我的 1080p 视频录制更模糊,要么具有非常模糊的“4k”,实际分辨率低于 1080p,非常模糊。我认为,这些应用程序中的大多数还“检测到 4 个摄像头”,我可以切换,而不是前/后,因为摄像头应该像他们应该的那样协同工作。

结果是所有这些“IP 网络摄像头”给我的视频不够好——相当模糊,这比我录制的 4k UHD 视频(甚至是我在录制时如何在屏幕上看到 1080p 的 4k 视频)差得多。

规格:三星 Galaxy A71,Android 11

问题:有没有什么可能的方法可以通过我的 WiFi 本地网络将手机的 UDH 4k 视频流式传输到我的 PC,并获得至少在某种程度上接近我真正的 4k UDH 视频录制质量的质量?

0 投票
1 回答
55 浏览

c++ - 从 OnThreadCreate 调用 CoCreateInstance 时挂起

我对 CoCreateInstance 有一个问题,它在被调用后永远不会返回。它从 CSourceStream::OnThreadCreate 的重写方法调用

我认为问题在于我尝试在单独的线程中使用 COM,但我不确定。如何在另一个线程中使用 COM?这是调用堆栈以及无论如何我如何调用该函数。我检查了 CoInitialiseEx 返回 S_FALSE,所以 com 正在那个线程上运行。 调用堆栈

我发现如果我在另一个运行在同一线程上的方法(CSourceStream::FillBuffer)中使用 CoCreateInstance,它可以工作,但我不知道为什么。

当 CoCreateInstance 挂起时,它会卡在 WaitForMultipleObjectsEx 上,如下所示: 调用堆栈 2

0 投票
1 回答
112 浏览

linux - 使用录制的剪辑发送网络摄像头输入以进行缩放

我有一个我一直在研究的想法,但在继续之前,我很想了解一些技术细节。

据我了解,Linux 通过 /dev/ 与底层硬件进行通信。我正在搞乱我的视频摄像头输入以进行缩放,我发现有人解释说我需要创建一个虚拟设备并将其安装到另一个名为 v4loop 的程序的输出。我的问题是

1- Zoom 如何检测可用于输入的网络摄像头。我的 /dev 目录有 2 个名为 video 的“文件”(/dev/video0 和 /dev/video1),但 zoom 只检测到一个网络摄像头。网络摄像头通信是否通过此视频文件完成?如果是,为什么简单地创建一个不会影响缩放输入选择。如果没有,缩放如何检测输入并读取网络摄像头提要?

2-我可以创建一个虚拟设备并为其编写一个内核模块,以提供来自本地文件的输入。我写了很多内核模块,我知道它们有读、写、释放方法。每当发出来自缩放的读取请求时,我都想解析视频。视频应该如何编码?它是 mp4 还是原始格式或其他格式?我应该以多快的速度发送输入(以千字节为单位)。我认为这是我的网络摄像头录制规格的功能。如果它是 1920x1080,每个像素是 3 字节 (RGB),并且以 20 fps 的速度录制,我可以简单地计算出每秒生成多少字节,但 Zoom 是如何期望输入输入的。假设它正在实时发送流,那么它应该每隔几毫秒读取一次输入。我如何访问这些信息?

先感谢您。这是一个学习实验,我只是想做一些我有动力去做的有趣的事情,同时学习更多关于 Linux 硬件通信的知识。我还是个初学者,所以请放轻松。