Controllo webcam programmatico

Sopra il Custom Button API puoi controllare programmaticamente il registratore della webcam senza richiedere interazioni con l’utente. Dovresti combinare il controllo della webcam programmatica con la callbackonWebcamStatusChange, che ti permetterà di mantenere lo stato nel tuo codice in sincronia con lo stato attuale del registratore della webcam. La process.open() chiamata del Custom Button API ritorna un Javascript Promise, che si risolve in un oggetto API della webcam quando viene visualizzato il widget Clipchamp:

<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>

Si consiglia di chiamare inizialmente la funzione areRecordingDevicesReady(), che si risolve se la webcam può essere accesa con successo e la registrazione avviene normalmente. Puoi usare questa chiamata come “preflight” controllo per confermare che le chiamate successive possono essere eseguite. Si prega di notare che areRecordingDevicesReady potrebbe richiedere un’interazione dell’utente per approvare un popup del browser che richiede al browser di approvare il dominio api.clipchamp.com per accedere alla webcam e al microfono. Una volta approvata, l’autorizzazione corrispondente viene in genere memorizzata nel profilo del browser, ma può essere revocata in qualsiasi momento a seguito della cancellazione della cache del browser da parte dell’utente, utilizzando la modalità di navigazione in incognito del browser, nuovi dispositivi hardware disponibili o altro. Quindi, è una buona idea far precedere ogni chiamata dell’API di controllo della webcam programmatica da una chiamata areRecordingDevicesReady(). Le altre funzioni dell’API di controllo della webcam programmatica sono:

  • startRecording(): Avvia la registrazione se il widget Clipchamp mostra la schermata della webcam e l’acquisizione della webcam è attiva.
  • pauseRecording(): Mette in pausa la registrazione se una registrazione è stata precedentemente avviata e non è attualmente in pausa.
  • resumeRecording(): Riprende la registrazione se una registrazione è stata precedentemente avviata ed è attualmente in pausa.
  • finishRecording(): Termina la registrazione e attiva la successiva elaborazione del video.
  • cancelRecording(): Interrompe una registrazione e chiude il widget Clipchamp.

Tutte queste funzioni sono asincrone e possono tornare prima che l’azione corrispondente sia completata. Utilizzare la callback onWebcamStatusChange per sincronizzare qualsiasi stato dalla propria parte con lo stato effettivo del registratore della webcam. Se viene chiamata una funzione dell'API di controllo della webcam e il registratore della webcam si trova in uno stato incompatibile, la chiamata potrebbe non essere accodata per un'esecuzione successiva quando il registratore della webcam ha raggiunto lo stato corretto. Ad esempio, l’azione dell'API di controllo della webcam non viene definita quando chiami startRecording(), ma la richiamata onWebcamStatusChange non ha segnalato in precedenza che l'acquisizione della webcam è avvenuta correttamente (capture_started).