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 環境中建置。