Skip to main content

Send frames to a virtual camera

Project description

pyvirtualcam

pyvirtualcam sends frames to a virtual camera from Python.

Usage

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 uses the first available virtual camera it finds (see later section).

For more examples, including using different pixel formats like BGR, or selecting a specific camera device, check out the examples/ folder.

See also the API Documentation.

Installation

This package works on Windows, macOS, and Linux. Install it from PyPI with:

pip install pyvirtualcam

pyvirtualcam relies on existing virtual cameras which have to be installed first. See the next section for details.

Supported virtual cameras

Windows: OBS

OBS includes a built-in virtual camera for Windows (since 26.0).

To use the OBS virtual camera, simply install OBS.

Note that OBS provides a single camera instance only, so it is not possible to send frames from Python to the built-in OBS virtual camera, capture the camera in OBS, mix it with other content, and output it again to OBS' built-in virtual camera. To achieve such a workflow, use another virtual camera from Python (like Unity Capture) so that OBS' built-in virtual camera is free for use in OBS.

Windows: Unity Capture

Unity Capture provides a virtual camera originally meant for streaming Unity games. Compared to most other virtual cameras it supports RGBA frames (frames with transparency) which in turn can be captured in OBS for further processing.

To use the Unity Capture virtual camera, follow the installation instructions on the project site.

macOS: OBS

OBS includes a built-in virtual camera for macOS (since 26.1).

NOTE: Starting with pyvirtualcam 0.10, only OBS 28 or higher is supported. Install an older version if you need OBS 26 / 27 support.

HELP WANTED: pyvirtualcam requires code updates to run on macOS 14 and higher. If you own a Mac, consider contributing: https://github.com/letmaik/pyvirtualcam/issues/111#issuecomment-1763398540.

To use the OBS virtual camera, follow these one-time setup steps:

  • Install OBS.
  • Start OBS.
  • Click "Start Virtual Camera" (bottom right), then "Stop Virtual Camera".
  • Close OBS.

Note that OBS provides a single camera instance only, so it is not possible to send frames from Python, capture the camera in OBS, mix it with other content, and output it again as virtual camera.

Linux: v4l2loopback

pyvirtualcam uses v4l2loopback virtual cameras on Linux.

To create a v4l2loopback virtual camera on Ubuntu, run the following:

sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback devices=1

For further information, see the v4l2loopback documentation.

Build from source

Linux/macOS

git clone https://github.com/letmaik/pyvirtualcam --recursive
cd pyvirtualcam
pip install .

Windows

These instructions are experimental and support is not provided for them. Typically, there should be no need to build manually since wheels are hosted on PyPI.

You need to have Visual Studio installed to build pyvirtualcam.

In a PowerShell window:

$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

The above will download all build dependencies (including a Python installation) and is fully configured through the four environment variables. Set USE_CONDA = '0' to build within an existing Python environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pyvirtualcam-0.12.1-cp313-cp313-win_amd64.whl (174.7 kB view details)

Uploaded CPython 3.13 Windows x86-64

pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (106.3 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.27+ ARM64 manylinux: glibc 2.28+ ARM64

pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (148.3 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pyvirtualcam-0.12.1-cp313-cp313-macosx_11_0_arm64.whl (305.5 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

pyvirtualcam-0.12.1-cp313-cp313-macosx_10_9_x86_64.whl (305.2 kB view details)

Uploaded CPython 3.13 macOS 10.9+ x86-64

pyvirtualcam-0.12.1-cp312-cp312-win_amd64.whl (174.7 kB view details)

Uploaded CPython 3.12 Windows x86-64

pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (106.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.27+ ARM64 manylinux: glibc 2.28+ ARM64

pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (147.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyvirtualcam-0.12.1-cp312-cp312-macosx_11_0_arm64.whl (305.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyvirtualcam-0.12.1-cp312-cp312-macosx_10_9_x86_64.whl (305.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pyvirtualcam-0.12.1-cp311-cp311-win_amd64.whl (174.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (106.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.27+ ARM64 manylinux: glibc 2.28+ ARM64

pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyvirtualcam-0.12.1-cp311-cp311-macosx_11_0_arm64.whl (309.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyvirtualcam-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl (309.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyvirtualcam-0.12.1-cp310-cp310-win_amd64.whl (171.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (105.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.27+ ARM64 manylinux: glibc 2.28+ ARM64

pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (147.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyvirtualcam-0.12.1-cp310-cp310-macosx_11_0_arm64.whl (307.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyvirtualcam-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl (307.9 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyvirtualcam-0.12.1-cp39-cp39-win_amd64.whl (171.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (105.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.27+ ARM64 manylinux: glibc 2.28+ ARM64

pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (147.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyvirtualcam-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl (308.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

Details for the file pyvirtualcam-0.12.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8a81c4eb998260d2f6bd23dc305bfdbb05845fc2399f854c497e6c0e054fa656
MD5 91d0b504c8549fa534724eb338db9636
BLAKE2b-256 cf73480db7323aaa704c7b2e171c98338737c6dda8b8a1126a313ae17787d8ed

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5329aedd1e43ed239ed8ee87934c5cab151c71fddedcd7e628226351e31d0c3f
MD5 6ceab90cf63b21b60afb665a0308b588
BLAKE2b-256 2dc5a4928c50b36579e8d2493d751a79b98b8c345ab00a192bf8901db241136e

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 daed04508b0dd3b63e50a797d08746e12525e663776982c9d3a9f1c218643106
MD5 c49312db201eadcdf23600c39a5f3dce
BLAKE2b-256 5a430aa7b1794fdd58c48ce357593cb53d0a298e076d24935ec140ff7ed941b9

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 060fd745f5cdcb82e21ff2da81b3220b53ee7f6c3ff3bc5e81a28c039cd1d25d
MD5 0782ddaae1084da4ef1b8c595c7cc65c
BLAKE2b-256 5cda740ab7e5a30a099a0511fddf37bb1845d185bb5f3fb24516bdde3d142327

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp313-cp313-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp313-cp313-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9806b48ee9586efe46b364bf8bc6f16cbc67c09aa2521dc9489c5ff1a6174c76
MD5 a12fa8ffc6658d1e0b0610ed44160c06
BLAKE2b-256 0e8176c40f8504967256b40f9d03a9dfc4e6bed5c16b4fd76df3ae08dd9486e2

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bb80524ccfb0c0c7e4de435844119945ed98243c9a43eeccf1a1239ed6db7bc2
MD5 f185b1ed87b6029ba482f6a5b0c2a9dc
BLAKE2b-256 06865d8cb67186bee85a30aa53954b39d5a22a303e4277a7600b43e937adf441

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3e9a1fc758f5f5e783a063f7e7649439e1d432dadafc887ab353f33511b6d3fa
MD5 518002483f132406aa248275c4b2077e
BLAKE2b-256 22e17fb24605b40b4fe767b39ee1d1046a1c285598ef303ccb61c9b8015c678a

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6854082a4f0b5b90cfbe9c480c311a08b63504ee471fcd07e047800a9e58c36
MD5 764bdbf63db2b0d22bcbc1f46d2addef
BLAKE2b-256 e27b8a410cc3c52300aa82c5c466c9a3bf229cad688ca14ca3204b523fb96efb

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5bba6275bd454478cb4456668a1638d713aaeb29880e32422cd61fb4e6bdc7e6
MD5 a123758c71d17b059fb26bd1aed3b0b7
BLAKE2b-256 abf74b1cdfe49e8b8e41e890e905ecf438f34a52698641f8d707c8051ba07653

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c63dcdf2f0baf0ea036a88de3bdbf2a0c159c022c0a4cfbce58629b6fe17c77e
MD5 45f66254fc856ff668ca0c00b52393e4
BLAKE2b-256 40340120f6fda1c79277fb211cfdaf3a7effd7ce3f4c1bf3b97708d8f77fe652

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15513e134d761b7e1c17e41d907163fd45760ca006ffd8b5ba04190c9d90f5c3
MD5 7938fbdb7d3053722b1cd0930184236a
BLAKE2b-256 6174503304740c726a5ad284a1977846d8963e8faddc03f75c5d4056a6df7733

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 59fe8790c8ad3b0a829f139b29296ab8ca3659a9fe4ff3983e7aed8d34dda589
MD5 6a9077bbad142603e1b2d99e7e06e5a5
BLAKE2b-256 6be01c3af89d19c1b6c620ec75330030f2dac2f6af77d093fe89b620c40f267d

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fbdf52133cb0e1b8e60ba18ba765fab7be6cb9c8a3758c10aca057fd8a438aad
MD5 8c8513da893739eec5fe551866e9d2ab
BLAKE2b-256 a90b73b56d3bf4b0fc41dd0991ea0b41a846022afa2b5d58e20a9e217836a7f8

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fd2d1de4754d28288190d9a0f8934a76a83edfadb13a3f52abd450b080f549b
MD5 c3516175272ff46a217e402f749a8aff
BLAKE2b-256 457ad9f84dc051aa3ae7f5ad90ebce1b3145bc3fa4964d30cd8295be20f781db

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da6cbd4c060c929921c56ccdabbd1f609ed4a68ff3405d340080e9925cbb0ffe
MD5 6382aa2d8f3e994e5018b6ba82bedd94
BLAKE2b-256 c872118d453b801a18291d82ea00b3347fa9fe4c819580df1f6cbdc8d10f5868

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e28fd026abd3e3a86757033ce18f0ac626c851c8c9dfcfc484df947f26f157cb
MD5 874d91e3d5f8385eb9f4e29ba35566fd
BLAKE2b-256 c54b4d4a2f40d5d69b1de6cd4316639c34d57d6fcdb67af9708831106846093a

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f0a69c7576448cba43f2f09ae65de569f676c52f33e45323af18c5f01ef9bb69
MD5 dd73c428fc257cd411a08d1fa0d474c5
BLAKE2b-256 f61f84ea231442ff03e2dbe1e135e04a2b516a92648fdf7340ce450f49ce7ddd

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d425a9e14b11b93ebc586388d672d511c48fe05c6aa82fe48654e7044aa3565
MD5 1fb50a3ae9d80fd5edd9eec21b7d2a0f
BLAKE2b-256 396c8ed52aa03787147dd876b84267f0ae9315773cf25c4b7c3dcfddc14937f2

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee869ece646e059829558eec43726a4f5df110d1639ab2c070f1e2cb56668a22
MD5 1aeaa1cab20f9b0b46f19d86eb10a8f7
BLAKE2b-256 39375d108b09c4fa666def1137f9c95cbb37e51ed3288f4b080205f0738b3aa5

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e1238d9c239805d35ac8a3efceaee0d701ede3233b38d1a93cb075a0b28e628d
MD5 d1e7b0128d1924ba8b8c63055f55cd5d
BLAKE2b-256 e8ca3fc451a00e188e1d87962505b27e85ca57de82cffe8efce16fc0c8aec627

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 310f4158f40ff5ac060d70601429c7f11cb118145a8ae374d193072f4da739b6
MD5 d38620c7e4d3abe3e88d39ce5e03634b
BLAKE2b-256 9201a27a2e3ed5094f5116a1b23c8466a6da6fff802fbb17141b1baa3b18b46c

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d5be6a30047f0a592ed2c7e524aa0b2e03737845137431ae6b891a236f7941c0
MD5 cbcdbea9770df8701f76e275e95d3b00
BLAKE2b-256 199afbb1ea5a4f8b3c69127b94a505b11c43d9fad369591c704795f418d23b0a

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1189974eed11e2f8098a345cfbeb58e6df9a1ea20d16bb14a821f8ac345ba210
MD5 62510131d91235a00384b7fd61a56f85
BLAKE2b-256 57c3f1ccee1bed987e339726b22372322cc7e5965f30227c547058f7e7e6af2e

See more details on using hashes here.

File details

Details for the file pyvirtualcam-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyvirtualcam-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3d0769e184ef2415a76cbe0266001d52b367fb25b4f7fd4644037909d5da1156
MD5 688324ae50adb7bad0b1adf2dd3ba3ae
BLAKE2b-256 f7317fae7585fb7ba25e9f6575b16336c63333f699476e4e1374c5f2e4f01377

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page