pyvirtualcam 将帧从 Python 发送到虚拟相机。
import colorsys
import numpy as np
import pyvirtualcam
with pyvirtualcam . Camera ( width = 1280 , height = 720 , fps = 20 ) as cam :
print ( f'Using virtual camera: { cam . device } ' )
frame = np . zeros (( cam . height , cam . width , 3 ), np . uint8 ) # RGB
while True :
h , s , v = ( cam . frames_sent % 100 ) / 100 , 1.0 , 1.0
r , g , b = colorsys . hsv_to_rgb ( h , s , v )
frame [:] = ( r * 255 , g * 255 , b * 255 )
cam . send ( frame )
cam . sleep_until_next_frame ()
pyvirtualcam 使用它找到的第一个可用的虚拟相机(请参阅后面的部分)。
有关更多示例,包括使用不同的像素格式(如 BGR)或选择特定的相机设备,请查看examples/
文件夹。
另请参阅 API 文档。
该软件包适用于 Windows、macOS 和 Linux。从 PyPI 安装它:
pip install pyvirtualcam
pyvirtualcam 依赖于必须首先安装的现有虚拟摄像机。有关详细信息,请参阅下一节。
OBS 包含适用于 Windows 的内置虚拟摄像头(自 26.0 起)。
要使用OBS虚拟摄像机,只需安装OBS即可。
请注意,OBS 仅提供单个相机实例,因此无法将 Python 中的帧发送到内置 OBS 虚拟相机,在 OBS 中捕获相机,将其与其他内容混合,然后再次输出到 OBS 内置虚拟相机。在虚拟相机中。要实现这样的工作流程,请使用Python的另一个虚拟相机(例如Unity Capture),以便OBS的内置虚拟相机可以在OBS中免费使用。
Unity Capture 提供了最初用于流式传输 Unity 游戏的虚拟相机。与大多数其他虚拟相机相比,它支持 RGBA 帧(具有透明度的帧),而这些帧又可以在 OBS 中捕获以进行进一步处理。
要使用 Unity Capture 虚拟相机,请按照项目站点上的安装说明进行操作。
OBS 包含适用于 macOS 的内置虚拟相机(自 26.1 起)。
注意:从 pyvirtualcam 0.10 开始,仅支持 OBS 28 或更高版本。如果您需要 OBS 26 / 27 支持,请安装旧版本。
需要帮助:pyvirtualcam 需要更新代码才能在 macOS 14 及更高版本上运行。如果您拥有 Mac,请考虑贡献:#111(评论)。
要使用 OBS 虚拟摄像头,请按照以下一次性设置步骤操作:
请注意,OBS 仅提供单个相机实例,因此无法从 Python 发送帧、在 OBS 中捕获相机、将其与其他内容混合并再次作为虚拟相机输出。
pyvirtualcam 在 Linux 上使用 v4l2loopback 虚拟摄像头。
要在 Ubuntu 上创建 v4l2loopback 虚拟摄像头,请运行以下命令:
sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback devices=1
有关更多信息,请参阅 v4l2loopback 文档。
git clone https://github.com/letmaik/pyvirtualcam --recursive
cd pyvirtualcam
pip install .
这些说明是实验性的,不为其提供支持。通常,不需要手动构建,因为轮子托管在 PyPI 上。
您需要安装 Visual Studio 才能构建 pyvirtualcam。
在 PowerShell 窗口中:
$env :USE_CONDA = ' 1 '
$env :PYTHON_VERSION = ' 3.7 '
$env :PYTHON_ARCH = ' 64 '
$env :NUMPY_VERSION = ' 1.14 '
git clone https://github.com/letmaik/pyvirtualcam --recursive
cd pyvirtualcam
powershell .github/scripts/build-windows.ps1
上面将下载所有构建依赖项(包括 Python 安装),并通过四个环境变量进行完全配置。设置USE_CONDA = '0'
以在现有 Python 环境中构建。