Programmatische Steuerung der Webcam

*****

Please note – we’re currently revising the Collect API. During this period new trial signups are not available.

*****

Zusätzlich zum Eigener Button API kannst du die Webcam auch programmatisch steuern, d.h. ohne dass eine Nutzerinteraktion nötig ist. Dabei solltest du die programmatische Webcam-Kontrolle mit dem onWebcamStatusChange Callback kombinieren, was dir ermöglicht, den Status in deinem Code mit dem tatsächlichen der Webcam synchron zu halten. Der process.open() Call des Eigener Button API antwortet mit einer Javascript Promise, die in ein Webcam API Objekt überführt wird wenn das Clipchamp Widget angezeigt wird:

<script type="text/javascript">
    var process = clipchamp({
        inputs: ['camera'], // go directly to the webcam
        enable: [
            'no-thank-you', // close widget after upload and skip final 'Thank you' screen
            'no-user-retry', // directly upload video after finishing recording
            'mobile-webcam-format-fallback' // use inline recorder in Chrome on Android
        ],
        onWebcamStatusChange: function(status) {
            // handle current webcam and recording status (optional)
        }
    });
    process.open().then(function(remote) {
        // Webcam widget is now open.
        // First check if webcam/phone camera is ready:
        remote.areRecordingDevicesReady().then(function() {
            // Webcam/camera can be used on this browser/device.
            // Now call remote.startRecording() to start recording.
        }).catch(function() {
            // webcam/camera not accessible on this browser/device
        });
    });
</script>

Wir empfehlen zuerst die areRecordingDevicesReady() Funktion aufzurufen, die gelöst wird wenn auf die Webcam erfolgreich zugegriffen werden kann und wenn Aufnahmen prinzipiell möglich sind. Du kannst diesen Call als „preflight“ Check nutzen um zu bestätigen, dass darauffolgende Calls durchgeführt werden können. Dabei benötigen areRecordingDevicesReady Calls evtl. eine Nutzerinteraktion um der Domain api.clipchamp.com Webcam- und Mikrofonzugriff im Browser zu gewähren, wofür dem User vom Browser eine Benachrichtigung angezeigt wird. Sobald der Zugriff genehmigt wurde, wird die dazugehörige Erlaubnis normalerweise im Browserprofil gespeichert, kann aber jederzeit widerrufen werden, bspw. wenn der Nutzer den Cache leert, wenn der Incognitomodus verwendet wird, wenn neue Hardware eingesteckt wird, o.ä. Ereignisse auftreten. Daher ist es ratsam jedem Aufruf der programmatischen Webcamsteuerung einen areRecordingDevicesReady() Call voraus gehen zu lassen. Die anderen Funktionen des programmatischen Kontroll API sind:

  • startRecording(): Startet die Aufnahme falls das Clipchamp Widget die Webcam UI anzeigt und “webcam capture” läuft.
  • pauseRecording(): Pausiert die Aufnahme falls vorher eine Aufnahme gestartet wurde und nicht bereits pausiert ist.
  • resumeRecording(): Setzt die Aufnahme fort falls vorher eine Aufnahme gestartet wurde und momentan pausiert ist.
  • finishRecording(): Beendet die Aufnahme und startet die anschließende Bearbeitung des Videos.
  • cancelRecording(): Bricht eine Aufnahme ab und schließt das Clipchamp Widget.

Alle diese Funktionen sind asynchron und können wiederaufgerufen werden bevor die zugehörige Aktion beendet ist. Nutze bitte den onWebcamStatusChange Callback um jeden deiner Status mit dem tatsächlichen Status des Webcamrekorders zu synchronisieren. Falls eine Funktion der Webcamsteuerung aufgerufen wird und die Webcam in einem inkompatiblen Status ist, wird die Funktion evtl. nicht für eine Ausführung zu dem Zeitpunkt vorgemerkt, zu dem die Webcam den korrekten Status erreicht hat. Bspw. ist das Verhalten des Webcamsteuerungs-API nicht definiert wenn du startRecording() aufrufst, aber der onWebcamStatusChange Callback vorher nicht signalisiert hat, dass die Webcamaufnahme erfolgreich eingeschaltet wurde (capture_started).