Bisher konnte man PTZControl nur mit der Maus bedienen. Alternativ ließen sich die integrierten Hotkeys verwenden, solange das Programm aktiv war und den Eingabefokus besaß.
Nun habe ich globale Hotkeys integriert, wie man sie von Windows-Befehlen mit der Windows-Taste kennt. Dabei spielt es keine Rolle mehr, welches Programm aktuell den Eingabefokus hat – der entsprechende Befehl wird immer in dem Programm ausgelöst, das den Hotkey registriert hat.
Da sehr viele Tastenkombinationen mit der Windows-Taste bereits belegt sind, habe ich mich entschieden, die numerischen Tasten des Nummernblocks (Numeric Keypad) zu verwenden. D.h. auch, dass Num-Lock eingeschaltet sein muss. Ist Num-Lock ausgeschaltet haben die Tasten im numerischen Tastenblock Cursor-Funktion en.
Kamera 1 (Windows Taste + Numerische Taste)
Windows-Taste + 0 (im numerischen Tastaturblock) = Home Position Kamera 1
Das praktische ist hier, dass man nicht einmal die aktive Kamera wechseln muss. Selbst wenn Kamera 1 aktiv ist kann man mit Windows-Taste+Strg+2, die Position-2 der zweiten Kamera auswählen, und mir Windows-Taste+1 sofort die auf Memory-Position 1 gespeicherte Kameraposition auswählen.
Anmerkung: Sollte bereits ein Programm die gleichen globalen Hotkeys benutzen, dann „gewinnt“ das Programm, das zuerst gestartet wird. Nur dessen Hotkeys können dann verwendet werden.
Mich haben doch einige Anfragen erreicht, die um den Sourcecode von PTZControl gebeten haben.
Ich habe mich entschieden den Code auf GitHub zu veröffentlichen. Ich hoffe, dass dies anderen hilft, oder es nützt den Sourcecode anderweitig zu verwenden.
Vielleicht hilft es so, anderen das Streaming der Gottesdienste mit der PTZ 2 Pro oder Rally einfacher zu gestalten.
Mit Corona kamen wir auch als Kirchengemeinde schnell zum Streamen unserer Gottesdienste. Die Lernkurve war steil und für mich ziemlich heftig.
Selten musste ich so viele Dinge auf einmal unter den Hut bringen und lernen und zeitgleich ein Team aufbauen, dass das Videostreaming seit Mai 2020 aufrechterhält. Und wie es aussieht, wird es keinen Schritt mehr zurückgeben. Jetzt haben wir Streaming als bleibenden Dienst mit einem festen Mitarbeiterteam und die Gemeinde hat sich mehr oder weniger auch an diesen Luxus gewöhnt. Das ist positiv wie negativ (aber das ist vielleicht etwas für einen späteren Blogartikel).
In kürzester Zeit musste ich mich für eine Technik, Hardware und Software entscheiden. Dabei sollte die Lösung natürlich preiswert, einfach, kompatibel und billig sein. Was auch sonst?
Wir haben uns entschieden ohne Video Schnittboard (ATEM Board oder ähnliches) zu arbeiten. Der Preis für digitale Kameras schockte mich etwas, zudem fand ich festinstallierte Kameras zu statisch.
Ich dann schnell kam zu der folgenden Lösung:
OBS als primäre Software, auch zur Schnittsteuerung und zur Auswahl der Szenen
2 angeschlossene Logitech PTZ 2 Pro (am Anfang war es nur eine)
Ein Elgato HD 60S+ um unsere Beamer Ausgabe in den Stream einzubinden
Unser Sound wird auch über das Elgato HD 60S+ direkt aus dem Mischpult abgegriffen.
Ein weiteres USB-Mikro, als Raummikrofon bei Bedarf
Gestreamt wird direkt über YouTube
Als Hardware wurde ein preiswerter (hässlicher) HP-Laptop mit einem schnellen Intel I5 Prozessor angeschafft (500€), aber die Hardware ist schnell gut und stabil auch durch die OBS QSV Hardware Unterstützung.
Dazu noch einige aktive USB-2 Kabel mit 10m Länge.
Alles in allem sind wir damit unter 1.800€ geblieben.
Die Logitech PTZ 2 Pro erschien mir mit einem 10fach Zoom und der hohen Bildqualität als ideal und preiswerte Kamera. Ich habe beide Kameras als B-Ware (1 Jahr Garantie) für um die 450€ erwerben können.
Beim Start des Streamens mit einer Kamera konnten wir noch die Fernbedienung nutzen, aber das war hakelig. Zudem stört das Zoomen und Scharfstellen, das Streaming-Erlebnis. Das Video wirkt nervös und unprofessionell.
Also wurde eine zweite Kamera angeschafft. Damit können wir nun überblenden von einer Szene in die andere (was sehr professionell wirkt). Eine neue Kameraposition anfahren mit der inaktiven Kamera und wieder überblenden, nun ganz einfach. Das Problem war nur die Steuerung von zwei Kameras.
Man hätte es einfach machen können und eine Kamera mit fester Position nutzen können und bei der anderen die PTZ (Pan Tilt Zoom) Funktionen. Damit hätte man zumindest ein flexibles Überblenden ermöglicht.
Aber auch das „Zielen“ mit der Fernbedienung auf die Kamera war während des Streamens suboptimal. Zudem die Kamera hinter dem Mitarbeiter an der Wand montiert war. Also Blick nach vorne auf OBS und mit der Fernbedienung hinter sich zielen.
Idealer wäre also eine Softwaresteuerung für beide Kameras. Also habe ich geschaut was man machen kann, um die Kameras per Software zu steuern. Denn eigentlich müsste sich alles über das DirectInput Interface von Windows steuern lassen.
Herausgekommen ist ein kleines PTZControll.exe. Dieses kann alle Kamera Features komplett ausnutzen.
Oberfläche der Kamera Steuerung
Die Funktionen des kleinen Tools sind:
Automatischer Erkennung und Steuerung von bis zu 2 Logitech PTZ 2 Pro Kameras.
8 Kamera Presets
Kamera Presets können direkt in der App (Memory-Taste) umprogrammiert werden
Farbige Darstellung des aktuellen Presets
Selbst definierbare Tooltips zur Erklärung der Preset Positionen
Einfache Bedienung von Pan / Tilt / Zoom im Interface
Kleines Interface das direkt immer direkt im Vordergrund bleibt.
Das PTZControl.exe unterstützt 2 Steuerungsvarianten für den Motor. Das eine ist die direkte Schrittsteuerung über eine Logitech internes Interface. Die andere benutzt einen Timer mit einer „Motor an/aus“ Steuerung. Der Timer ist programmierbar (Standard 70msec). Die zweite Steuerung erwies sich als etwas feiner.
Das Programm kann frei heruntergeladen und genutzt werden. Nutzung auf eigenes Risiko und Gefahr.
Anmerkung zum Programm: Das Programm wurde mit C++ auf VS-2019 entwickelt und nutzt die MFC und ATL.
Wichtig: Das Programm sucht nach Kameras die den Text „PTZ 2 Pro“ im Namen haben und verwendet nur diese. Ich habe keine Teste mit anderen PTZ Kameras gemacht.