Zum Hauptinhalt springen

JavaScript- und Python-BYOD-Steuerung

Das ist der klarste Programmierweg

Wenn du Code-Beispiele willst, die heute mit Yealink funktionieren, behandle UVC85-BYOD und CP50 als Standard-Meeting-Peripherie auf dem Host-Computer.

1. Warum das funktioniert​

Yealink gibt öffentlich an:

  • UVC85-BYOD verbindet sich mit einem Computer ĂĽber ein einzelnes Type-C-Kabel,
  • CP50 unterstĂĽtzt USB-Verbindung zu einem Computer oder Conference-Display-OPS,
  • das gesamte Kit ist Plug-and-Play.

Das bedeutet, dass deine App normalerweise ĂĽber Standard-OS-Media-APIs darauf zugreifen kann.

2. Browser-JavaScript​

Schritt 1: das Gerät verbinden​

Verbinde das Yealink-Kit mit dem Host-Computer und prĂĽfe, dass das Betriebssystem Folgendes sieht:

  • eine Kamera,
  • ein Mikrofon,
  • und in der Regel einen Lautsprecher oder Audioausgabepfad.

Schritt 2: Geräte auflisten​

async function listDevices() {
const devices = await navigator.mediaDevices.enumerateDevices();
return devices.map(({ deviceId, kind, label }) => ({ deviceId, kind, label }));
}

listDevices().then(console.table);
async function openYealinkStream() {
const devices = await navigator.mediaDevices.enumerateDevices();

const video = devices.find(
(device) => device.kind === 'videoinput' && /yealink|uvc85/i.test(device.label)
);

const audio = devices.find(
(device) => device.kind === 'audioinput' && /yealink|cp50/i.test(device.label)
);

return navigator.mediaDevices.getUserMedia({
video: video ? { deviceId: { exact: video.deviceId } } : true,
audio: audio ? { deviceId: { exact: audio.deviceId } } : true,
});
}

Schritt 4: Stream an Video anhängen​

const videoElement = document.querySelector('video');

openYealinkStream().then((stream) => {
videoElement.srcObject = stream;
});

Praxishinweise​

  • Browser-Labels sind erst zuverlässig, nachdem die Berechtigung erteilt wurde.
  • Gerätenamen unterscheiden sich je nach Betriebssystem.
  • Dieser Weg nutzt Standard-Browser-Media-APIs, kein Yealink-spezifisches SDK.

3. Python-Videobeispiel​

import cv2


cap = cv2.VideoCapture(0)

if not cap.isOpened():
raise RuntimeError("Could not open camera")

while True:
ok, frame = cap.read()
if not ok:
break

cv2.imshow("Yealink camera", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break

cap.release()
cv2.destroyAllWindows()

Verwende den korrekten Kameraindex für deinen Rechner. Auf Systemen mit mehreren Kameras zuerst die Geräte mit OS-Tools oder OpenCV-spezifischen Helfern auflisten.

4. Python-Audiobeispiel​

import sounddevice as sd


for index, device in enumerate(sd.query_devices()):
print(index, device["name"], device["max_input_channels"], device["max_output_channels"])

Nachdem du den Yealink-Geräteindex identifiziert hast:

import sounddevice as sd

duration = 5
sample_rate = 48000
device_index = 1

recording = sd.rec(
int(duration * sample_rate),
samplerate=sample_rate,
channels=1,
dtype="float32",
device=device_index,
)
sd.wait()
print(recording.shape)

5. Was du auf diesem Weg steuern kannst und was nicht​

Gute Anwendungsfälle:

  • die Yealink-Kamera und das -Mikrofon auswählen,
  • die Videoaufnahme starten,
  • das Kit in WebRTC- oder Python-Media-Apps nutzen,
  • eigene Meeting-Tools betreiben,
  • interne Desktop- oder Browser-Utilities bauen.

Aus den öffentlichen Doks nicht garantiert:

  • Kamera-Schwenk-, -Neige- oder -Zoom-Steuerung ĂĽber eine Yealink-spezifische API,
  • geräteseitige Konfigurations-RPCs,
  • Raum-Hardware-Orchestrierungs-APIs,
  • öffentliche Yealink-SDK-Methoden fĂĽr dieses Kit.

Wenn du PTZ oder Gerätekonfiguration über die generische Medienaufnahme hinaus brauchst, ist der nächste Schritt der Yealink-Support oder die Partnerdokumentation.